TREEVIEW与DATAGRIDVIEW结合
想实现这样一个功能,TREEVIEW这边点击节点,DATAGRIDEVIEW里面就显示相对应的数据,这些数据都是由数据库里的同一个表里提取的!请帮忙指点一下! --------------------编程问答-------------------- 。。。。没人指点么!还是不屑与这种低级问题。。。还请帮帮忙!先谢谢了 --------------------编程问答-------------------- 首先绑定后的treeview每个节点都有一个text和一个value,当点击每个节点时可以取到这个节点的value(一般是ID值)和text(显示的),然后用这个value来绑定datagridview就可以啦(在选择节点时):protected virtual void OnTreeView_SelectedNodeChanged(object sender, EventArgs e)
{
try
{
int id= int.Parse(((TreeView)sender).SelectedNode.Value.ToString());
bindGridview(id);
}
catch
{
}
} --------------------编程问答-------------------- 通过reeView1_SelectedNodeChanged事件,查询值,绑定数据到DATAGRIDEVIEW.
--------------------编程问答-------------------- 能不能具体点,现在刚学!很多不会!数据已经连接到DATAGRIDEVIEW了!我现在没个基本概念!。。。对这些控件的应用!或者能不能介绍点这些控件的实用的书!最好是带例子的!谢谢各位了! --------------------编程问答-------------------- 我目前也有這樣的疑問啊。幫頂~~
期待完美答案~! --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 1、得到tree的变化值
Private Sub RegionTree_AfterSelect(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles RegionTree.AfterSelect
DispCamera(Me.RegionTree.SelectedNode.Name.ToString)
End Sub
2、更新dg对应的数据源
Private Sub DispCamera(ByVal DispText As String)
Try
SourceDs.Clear()
SqlConn.Open()
Dim ReadStr As String = "Select DispName,CameraLib.Channel As CChannel,CameraLib.Memo As Memo,VideoServerLib.* From CameraLib " _
+ "Inner Join VideoServerLib On CameraLib.VideoServerId = VideoServerLib.Id Where DispUpId = '" + DispText + "' And DispState='True'"
Dim ReadAdapter As New SqlClient.SqlDataAdapter(ReadStr, SqlConn)
Dim ReadCommand As New SqlClient.SqlCommandBuilder(ReadAdapter)
ReadAdapter.Fill(SourceDs, "Camera")
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
SqlConn.Close()
End Try
Me.CameraList.DataSource = SourceDs.Tables("Camera")
End Sub --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 感谢!!正在使用 --------------------编程问答-------------------- 通过reeView1_SelectedNodeChanged,获取值。
来查找对应的内容绑定到datagrid --------------------编程问答-------------------- 根据treeview.selectnode 的name ,tag ,text 等属性,作为select 条件,生成新的 ds ,再绑定到 datagridview. --------------------编程问答-------------------- 最近没时间上网,现在才回来!看了各位老大的信息还是没摸着头脑!这里看看代码吧!我是看别人的:
Private Sub TreeView1_NodeMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
Dim dgvds As New DataSet
Dim da As SqlDataAdapter
Dim strdgv As String
If e.Node.Level = 0 Then
Call dgv()
Else
Call DBopen()
strdgv = "select pbbm as 部门,pbmc as 名称,pbdm as 班次,shang1 as 上班时间,sha1 as 下班时间,shang2 as 上班时间,sha2 as 下班时间,"
strdgv = strdgv & "shang3 as 上班时间,sha3 as 下班时间 from rsuserpb where pbbm='" & e.Node.Text & "'"
da = New SqlDataAdapter(strdgv, connection)
da.Fill(dgvds, "rsuserpb")
DataGridView1.DataSource = dgvds.Tables("rsuserpb")
DataGridView1.CurrentCell = Nothing
Dim i As Integer
For i = 1 To DataGridView1.RowCount
DataGridView1.Rows(i - 1).HeaderCell.Value = i.ToString
Next
ta = dgvds.Tables("rsuserpb")
Call DBclose()
End If
emp_id = 0
emp_name = ""
用的是NodeMouseClick事件,但是只实现了Node.Level = 0的事件把DATAGRIDEVIEW连接的整张表都显示出来了!但是点分节点的时候都没任何显示的。。。请问怎么改? --------------------编程问答-------------------- 这种问题实在不太好回答,随便看了一下楼上各位的,我同意3、10、11楼的思路。
慢慢做啦!呵呵 --------------------编程问答-------------------- 晕!召唤强淫 --------------------编程问答-------------------- 能提供个小系统的实例吗?谢谢了!! --------------------编程问答-------------------- 有两种办法:
1,点击NODE执行POSTBACK.后面代码中BINDDATAGRID.
2,绑定TREE时,给节点加JS代码.用DIV或者IFRAME显示DATAGRID.
点击节点时通过JS代码传节点ID刷新DG.
补充:.NET技术 , VB.NET