您好我正在插入表格,然后将所有内容读回ListView
当我重新打开程序时,我看到我刚刚保存在ListView
中的数据,但此记录未显示在保存时我的ListView
(虽然保存在表格中)。
我正在使用
listView.Update()
以及
listView.Refresh()
但它似乎不起作用。我只是使用SELECT
查询从datareader
读取数据并将其存储在我的listView
中,如下所示(正常工作)
唯一的问题是listView没有立即刷新,但是当我关闭/打开程序时它可以正常工作
这是我在Save方法结束时使用的代码。基本上这两个方法被称为
Private Sub SetColumns()
Dim lstpenalty As New ListView()
lstpenalty.Items.Clear()
lstpenalty.Visible = True
lstpenalty.Bounds = New Rectangle(New Point(390, 55), New Size(560, 379))
lstpenalty.Name = "lstpenalty"
lstpenalty.FullRowSelect = True
lstpenalty.View = View.Details
lstpenalty.GridLines = True
lstpenalty.Items.Clear()
lstpenalty.Columns.Add("a", 75)
lstpenalty.Columns.Add("b", 70)
lstpenalty.Columns.Add("c", 105)
lstpenalty.Columns.Add("d", 98)
lstpenalty.Columns.Add("e", 90)
lstpenalty.Columns.Add("f", 105)
Me.Controls.Add(lstpenalty)
LoadPenaltyList(lstpenalty)
End Sub
Private Sub LoadPenaltyList(ByRef listView As ListView)
Dim gDR As OracleDataReader
Dim cmd As New OracleCommand
Dim lstpenaltyview As New ListViewItem
Try
cnn.Connect_to_Oper_Agent()
cmd.Connection = cnn.cnn
listView.Items.Clear()
cmd.CommandText = " select a," & _
"b, " & _
"c, " & _
"d," & _
"e," & _
"f" & _
" FROM myTable" & _
" commit"
gDR = cmd.ExecuteReader()
While gDR.Read
lstpenaltyview = listView.Items.Add(Null_To_String(gDR("a")))
lstpenaltyview.SubItems.Add(gDR("b"))
lstpenaltyview.SubItems.Add(gDR("c"))
lstpenaltyview.SubItems.Add(gDR("d"))
lstpenaltyview.SubItems.Add(gDR("e"))
lstpenaltyview.SubItems.Add(gDR("f"))
End While
listView.Update()
Catch ex As Exception
MsgBox("There was an error... -> " & ex.ToString)
Finally
cmd.Dispose()
cnn.Close_Conn()
End Try
End Sub
感谢您的帮助
答案 0 :(得分:0)
值得研究一下哪些方法。
http://msdn.microsoft.com/en-us/library/system.windows.forms.listview_methods%28v=vs.71%29.aspx
更新:使控件重绘其客户区域内的无效区域。
刷新:强制控件使其客户区无效,并立即重绘自身和任何子控件。
要使用表信息更新它,请先清除列表视图,然后重做最初用于填充它的过程。
答案 1 :(得分:0)
所以我是动态创建ListView的。问题是它一直在创建ListViews(内存泄漏),它总是显示前一个。我创建了一个静态viewList而不是动态viewList,问题解决了:D
答案 2 :(得分:-2)
使用
For Each i As Windows.Forms.ListViewItem In ListView1.Items
i.Remove()
Next
而不是Clear