2013-12-09 4 views
1

Я связал базу данных с моей формой VB.net и хочу прочитать информацию о конкретном столбце, но не могу найти ответы. DataGrid содержит информацию о людях. Я хочу прочитать самый последний столбец, имя которого - «Вызов», и я хочу сохранить эти значения в списке, чтобы я мог их зацитировать через определенную функцию.Чтение информации Из столбца

For Each line As DataGridViewColumn In DataGridView1.Columns 
       If Not line.IsNewColumn Then 
        MessageBox.Show(line.Cells(0).Value.ToString & "," & line.Cells(1).Value.ToString) 
       End If 
      Next 

Я нашел это, и это своего рода выглядит как то, что я пытаюсь сделать, но я не знаю, как изменить его или положить его в список, так что любая помощь, пожалуйста?

ответ

2

Попробуйте это.

Dim colIndex As Integer 
    colIndex = 0 
    Dim strList As New List(Of String) 

    For i As Integer = 0 To DataGridView1.Rows.Count - 1 
     strList.Add(DataGridView1.Item(colIndex, i).Value.ToString) 
     ListBox1.Items.Add(strList(i)) 
    Next 

listbox1 просто тест инструмент для того, чтобы меня увидеть, если он работает, и он сделал :)
strList это список, который вы хотите, и colIndex является индекс столбца «Вызов» в DGV

Другой подход заключается в этом, благодаря Plutonix для указания некоторых важных деталей.

Dim strList As New List(Of String) 

    For i As Integer = 0 To DataGridView1.Rows.Count - 1 
     strList.Add(DataGridView1.Item("Call", i).Value.ToString) 
    Next 
    MsgBox(strList.count) 'number of items in the list. 
+0

colIndex может быть 'Columns.Count-1', no? или даже == 'Столбцы (« Вызов »). Индекс« Но 'colIndex = самый последний столбец, вероятно, не работает – Plutonix

+0

Какая часть этого является фактическим? strlist? и мне нужно объявить ListBox1 или избавиться от него? потому что он дает мне предупреждение lol –

+0

: «Listbox1 - это просто инструмент для тестирования», используйте свой список на его месте. – Plutonix

1

Весь мой код выглядит следующим образом. Я пытаюсь взять данные из столбца с именем «звонок» для каждого человека, чтобы отправить им электронное письмо на свой мобильный телефон. есть также текстовое поле, поэтому вы можете отправить 1 человеку, а не весь список.

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    'TODO: This line of code loads data into the 'ContactsDataSet.VBQuery' table. You can move, or remove it, as needed. 
    Me.VBQueryTableAdapter.Fill(Me.ContactsDataSet.VBQuery) 
    ' Set the caption bar text of the form. 
    Me.Text = "Texting From Email" 
End Sub 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    Try 

     Dim Smtp_Server As New SmtpClient 
     Dim e_mail As New MailMessage() 
     Dim self As New MailAddress("[email protected]") 
     Dim strCarriers As New List(Of String) 
     Dim colIndex As Integer 
     Dim strList As New List(Of String) 

     colIndex = 0 
     Smtp_Server.UseDefaultCredentials = False 
     Smtp_Server.Credentials = New Net.NetworkCredential("[email protected]", "blank") 
     Smtp_Server.Port = 587 
     Smtp_Server.EnableSsl = True 
     Smtp_Server.Host = "smtp.gmail.com" 

     strCarriers.Add("@pm.sprint.com") 
     strCarriers.Add("@vtext.com") 
     strCarriers.Add("@tmomail.net") 
     strCarriers.Add("@txt.att.net") 

     If rad1.Checked = True Then 

      For i As Integer = 0 To DataGridView1.Rows.Count - 1 
       strList.Add(DataGridView1.Item(colIndex, i).Value.ToString) 
       'strList.Items.Add(strList(i)) 
       'strList.Add(DataGridView1.Item("Call", i).Value.ToString) 

       For Each line In strList 

        For Each Carrier As String In strCarriers 

         e_mail = New MailMessage() 
         e_mail.From = self 
         e_mail.To.Add("strlist" + "Carrier") 
         e_mail.Subject = txtSubject.Text 
         e_mail.IsBodyHtml = False 
         e_mail.Body = txtMessage.Text 
         Smtp_Server.Send(e_mail) 

        Next Carrier 
       Next 
      Next 
     ElseIf rad1.Checked = False Then 

      For Each Carrier As String In strCarriers 

       e_mail = New MailMessage() 
       e_mail.From = self 
       e_mail.To.Add(txtTo.Text + Carrier) 
       e_mail.Subject = txtSubject.Text 
       e_mail.IsBodyHtml = False 
       e_mail.Body = txtMessage.Text 
       Smtp_Server.Send(e_mail) 

      Next 
     End If 

     MsgBox("Mail Sent") 

    Catch error_t As Exception 
     MsgBox(error_t.ToString) 

    End Try 
End Sub 
+0

вы не установили colIndex ... и у вас есть странный вложенный цикл – Plutonix

+0

вы пробовали изменить 'e_mail.To.Add (" strlist "+" Carrier ")' to 'e_mail.To.Add (строка + Carrier)' ??? – Codemunkeee

+0

Да, я пытаюсь отправить 4 письма по существу каждому элементу в вызове, а colIndex устанавливается прямо над Smtp_Server, если он не ошибается. –

0
colIndex = number of the column... Columns.Count - 1 should work if it 
' really is the last column 

Dim NumToCall As String 

For i As Integer = 0 To DataGridView1.Rows.Count - 1 
    ' dont need 
    'strList.Add(DataGridView1.Item(colIndex, i).Value.ToString) 

    NumToCall = DataGridView1.Item(colIndex, i).Value.ToString 
    ' you cal also reference by name: 
    NumToCall = DataGridView1.Item("Call", i).Value.ToString 


    ' Send Email 
    e_mail.To.Add(NumToCall & Carrier) 

Next 

Это проблема тоже:

For Each Carrier As String In strCarriers 

Учитывая реципиентом "Ziggy", он будет пытаться отправить [email protected], [email protected] , [email protected] и [email protected] Вам необходимо связать перевозчика с каждым человеком, чтобы избежать этого (если оператор или адрес электронной почты не являются частью сетки для начала). В противном случае разделите его на функции на GetCarrier, SendMail и т. Д., А не на петли в циклах.

... и вы не должны есть все исключения, как этот

+0

Ну, дело в том, чтобы отправить на 4 разных носителя каждый, чтобы покрыть все базы, в конце концов, я просто отброшу это, но я получаю нулевое исключение, поднятое с помощью . Если DataGridView1.Item (colIndex, i) .Value.ToString = "Call" Then –

+0

сверху: это ИМЯ последнего столбца CALL или вы ищете текст как «Call» в некотором столбце ??? – Plutonix

+0

Я пытаюсь получить элементы в столбце «Звонок» в список, который я могу пропустить и отправить сообщение, и теперь я чувствую себя идиотом со всей этой помощью, и его все еще не работает, извините за неудобства –

0

Попробуйте это на первый, если заявление.

For i As Integer = 0 To DataGridView1.Rows.Count - 1 
    strList.Add(DataGridView1.Item("Call", i).Value.ToString) 
Next 
For Each str In strList 
     For Each Carrier In strCarriers 
      e_mail = New MailMessage() 
      e_mail.From = self 
      e_mail.To.Add(str + Carrier) 
      e_mail.Subject = txtSubject.Text 
      e_mail.IsBodyHtml = False 
      e_mail.Body = txtMessage.Text 
      Smtp_Server.Send(e_mail) 
     Next 
    Next 
+0

Строка 43 = strList.Add (DataGridView1.Item (colIndex, i) .Value.ToString) –

+0

выдает исключение null и idk как обрабатывать его –

+0

использовать 'DataGridView1.Item (« Call », i) .Value.ToString' Мы не знаем, сколько столбцов есть или что вы используете для индекса – Plutonix

Смежные вопросы