2013-03-15 107 views
0

嗨,我插入表中,然後讀取所有內容到ListView當我重新打開程序時,我看到我剛剛保存在我的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

這兩種方法只是重繪其當前數據的控制。您需要使用新數據重新填充它。 – CathalMF 2013-03-15 14:03:36

+0

用戶單擊保存(插入)後,我打電話兩種方法。其中之一是重新構建listView,另一個是從表中讀取新數據 – user1683987 2013-03-15 14:04:39

+0

顯示代碼可能會有所幫助.. – 2013-03-15 14:04:43

回答

0

所以我在動態創建ListView。問題在於它一直在創建ListViews(內存泄漏),它總是顯示前一個。我創建了一個靜態Viewlist產品與動態的一個問題得到解決:d

0

你必須設置一個新的DataSource並調用DataBind方法,嘗試是這樣的:

Public Sub RefreshListView() 

    listView.DataSource = 'get your reader here' 
    listView.DataBind() 

End Sub 

,並調用RefreshListView方法。

-2

使用

For Each i As Windows.Forms.ListViewItem In ListView1.Items 
    i.Remove() 
Next 

而不是Clear

+0

您應該格式化它以使其看起來像代碼。並添加一些關於如何解決問題的解釋。 – Teepeemm 2015-11-05 02:12:15