2013-12-20 21 views
1

我有節點樹形像 桌面 筆記本 打印機等等使用的DataReader和瀏覽記錄

我寫代碼來獲取記錄在上述節點的點擊(臺式機,筆記本等各基地。) 代碼:

Private Sub tvMenu_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles tvMenu.AfterSelect 
'The event handler for clicking a node in the treeview 
    If tpDeviceStore.Focus Then 
     desktop() 
     notebooks() 
    End If 
End Sub 

「一個節點的實施例,以及如何記錄從DBASE

Private Sub desktop() 

    If tvMenu.SelectedNode.Name = "ndDesktop" Then 
     Dim con As New clsGlobals 
     con.cnn.Open() 
     Dim str1 As String = "select * from DeviceLogger where devType='Desktop' order by devSN desc" 
     Dim cmd1 As New SqlCommand(str1, con.cnn) 
     Dim dr As SqlDataReader = cmd1.ExecuteReader() 
     While dr.Read() 
      txtDT.Text = dr("devType").ToString 
      txtMF.Text = dr("devManufacture").ToString 
      txtMod.Text = dr("devModel").ToString 
      txtSN.Text = dr("devSN").ToString 
      txtRD.Text = dr("devRecieveDte").ToString 
      txtST.Text = dr("devStatus").ToString 
     End While 
     DV = New DataView(DS.Tables("Devicelogger")) 
     CM = CType(Me.BindingContext(DV), CurrencyManager) 
     dr.Close() 
     con.cnn.Close() 
    Else 
     txtDT.Text = String.Empty 
     txtMF.Text = String.Empty 
     txtMod.Text = String.Empty 
     txtSN.Text = String.Empty 
     txtRD.Text = String.Empty 
     txtST.Text = String.Empty 

     Exit Sub 
    End If 
End Sub 
檢索

我想要一個記錄檢索時,我的第一個,上一個,下一個和最後一個按鈕應該導航字段。 感謝您的幫助...

回答

0

由於您希望能夠導航記錄,我會建議您利用數據綁定和CurrencyManager。現在,你將不得不採取我的解決方案,並將其納入你的代碼(因爲我真的不是一個VB.NET程序員),但我會給你一個例子。你必須做的第一件事就是建立數據綁定:

txtDT.DataBindings.Add("Text", _dataContext, "{FieldName}") 

其中{FieldName}是在_dataContext的領域之一。這裏_dataContext將被定義爲一個field in the class這樣的:

private DataTable _dataContext; 

我們將不得不做的下一件事其實是加載數據。而不是使用SqlDataReader,我們只是要Fill a DataTable,以便CurrencyManager可以完成剩下的工作。獲取數據的代碼可能如下:

var sql = "select * from DeviceLogger where devType='Desktop' order by devSN desc"; 
using (SqlConnection c = new SqlConnection(connString)) 
{ 
    c.Open(); 

    using (SqlCommand cmd = new SqlCommand(sql, c); 
    { 
     _dataContext = new DataTable(); 
     _dataContext.Load(cmd.ExecuteReader()); 
    } 
} 

_currencyManager = (CurrencyManager)this.BindingContext[_dataContext]; 
_currencyManager.Position = 0 

其中_currencyManager也是這樣定義的私有類領域:

private CurrencyManager _currencyManager; 

現在,當您點擊下一步按鈕,你可以這樣做:

var nxt = _currencyManager.Position + 1; 
var cnt = _currencyManager.Count; 

_currencyManager.Position = (nxt >= cnt) ? cnt : nxt; 

並且數據綁定文本框中的數據會自動更改。去以前可能是這樣的:

var prev = _currencyManager.Position - 1; 
_currencyManager.Position = (prev < 0) ? 0 : prev; 

現在,如果_dataContext尋找一組不同的數據有一點不同,那也沒關係,你只需要數據重新綁定控件,以便它們匹配CurrencyManager_dataContext 。無論如何,這是在數據列表中來回移動的最直接方式,而控件則會改變它們的值。