我有一个像节点一样的树视图 桌面 笔记本电脑 打印机等...
我编写代码来获取每个基于点击上述节点(桌面,笔记本电脑等)的记录。 代码:
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 :(得分:0)
由于您希望能够导航记录,我建议您利用数据绑定和CurrencyManager
。现在,你将不得不采取我的解决方案并将其融入你的代码中(因为我真的不是VB.NET程序员),但我会给你一个例子。您要做的第一件事是设置数据绑定:
txtDT.DataBindings.Add("Text", _dataContext, "{FieldName}")
其中{FieldName}
是_dataContext
中的一个字段。此处_dataContext
将被定义为field in the class,如下所示:
private DataTable _dataContext;
接下来我们要做的就是加载数据。我们只使用SqlDataReader
Fill
而不是使用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
对于不同的数据集看起来有点不同,那很好,您只需再次绑定控件数据,以便它们匹配_dataContext
CurrencyManager
}。无论如何,这是在数据列表中来回移动的最直接的方式,而控件会改变它们的值。