2013-04-08 3 views
-1

Я пытаюсь отобразить данные таблицы базы данных sql в представлении списка в приложении vb. Я использовал следующий кодListView в VB.NET (VS 2010)

Public Class Form1 
    Dim conn As SqlClient.SqlConnection 
    Dim cmd As SqlClient.SqlCommand 
    Dim da As SqlClient.SqlDataAdapter 
    Dim ds As DataSet 
    Dim itemcoll(100) As String 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Me.ListView1.View = View.Details 
    Me.ListView1.GridLines = True 
    conn = New SqlClient.SqlConnection("Data Source=AYYAGARI-PC\WINCC;Initial Catalog=anand;Integrated Security=True") 
    conn.Open() 
    Dim strQ As String = String.Empty 
    strQ = "SELECT * FROM [anand].[dbo].[WINCC] ORDER BY [dateandtime]" 
    cmd = New SqlClient.SqlCommand(strQ, conn) 
    da = New SqlClient.SqlDataAdapter(cmd) 
    ds = New DataSet 
    da.Fill(ds, "Table") 
    Dim i As Integer = 0 
    Dim j As Integer = 0 
    ' adding the columns in ListView 
    For i = 0 To ds.Tables(0).Columns.Count - 1 
     Me.ListView1.Columns.Add(ds.Tables(0).Columns(i).ColumnName.ToString()) 
    Next 
    'Now adding the Items in Listview 
    Try 
     Call Timer1_Tick(sender, e) 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 
End Sub 

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 
    For Each i As ListViewItem In ListView1.SelectedItems 
     ListView1.Items.Remove(i) 
    Next 
    Try 
     For i = 0 To ds.Tables(0).Rows.Count - 1 
      For j = 0 To ds.Tables(0).Columns.Count - 1 
       itemcoll(j) = ds.Tables(0).Rows(i)(j).ToString() 
      Next 
      Dim lvi As New ListViewItem(itemcoll) 
      Me.ListView1.Items.Add(lvi) 
     Next 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 
End Sub 

Проблема с выше кода является то, что всякий раз, когда я обновить данные таблицы в SQL (вставка или удаление данных), то же не получает обновленный в виде списка. Пожалуйста, помогите мне с этим.

+0

Затем вы уверены, что данные, которые вы вставляете или обновляете, уже сохраняются в базе данных? – Kasnady

ответ

0
Me.ListView1.View = View.Details 
    Me.ListView1.GridLines = True 
    conn = New SqlClient.SqlConnection("Data Source=AYYAGARI-PC\WINCC;Initial Catalog=anand;Integrated Security=True") 
    conn.Open() 
    Dim strQ As String = String.Empty 
    strQ = "SELECT * FROM [anand].[dbo].[WINCC] ORDER BY [dateandtime]" 
    cmd = New SqlClient.SqlCommand(strQ, conn) 
    da = New SqlClient.SqlDataAdapter(cmd) 
    ds = New DataSet 
    da.Fill(ds, "Table") 
    Dim i As Integer = 0 
    Dim j As Integer = 0 
    ' adding the columns in ListView 
    For i = 0 To ds.Tables(0).Columns.Count - 1 
     Me.ListView1.Columns.Add(ds.Tables(0).Columns(i).ColumnName.ToString()) 
    Next 
    'Now adding the Items in Listview 
    Try 
     Call Timer1_Tick(sender, e) 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 

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

UPDATE

Я даю вам еще советы, что не сделает ваш код так долго и впустую память или емкость ..

Попробуйте вставить весь код на новый суб, например:

private sub mycode 
    msgbox("Hello World") 
    end sub >> This code won't work when you debug, cause it just like a stored code, so need to be called to make it work 

Private sub Form_load...... > E.g this is your form load code 
call mycode >> Called the code above 
end sub >> when you debug, your form will auto called the mycode 
+0

Пожалуйста, отметьте это как ответ. Я также даю вам еще один совет, чтобы ваш код не был таким длинным, – Kasnady

+0

Большое спасибо. – nandgate

+0

Он уже отмечен как ответ правильно? Как я могу сделать этот код короче? У меня есть еще один запрос, предположим, что в моем списке есть 10 элементов, и если я нажимаю на 5-й элемент, все данные, связанные с 5-м элементом, должны быть перемещены в переменные. Как это может быть сделано? Просьба помочь – nandgate

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