c#WINFORM中的TREEVIEW和SQL连接形成树形结构
c#WINFORM中的TREEVIEW和SQL连接形成树形结构,例如:电器为根,下面有电视,电脑,-------;看清楚了我要的是WINFORM.要能用的。高分求助!都做...
c#WINFORM中的TREEVIEW和SQL连接形成树形结构,例如:电器为根,下面有电视,电脑,-------;看清楚了我要的是WINFORM.要能用的。高分求助!
都做上注释好不好,你们不做注释那跟网上搜的有什么区别! 展开
都做上注释好不好,你们不做注释那跟网上搜的有什么区别! 展开
4个回答
展开全部
private void FillTree()
{
this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
this.treeView1.BeginUpdate();
DataTable myFirstDt;
DataTable myScendDt;
TreeNode myScendNode;
TreeNode myFirstNode;
TreeNode myRootNode = new TreeNode();
myRootNode.Text = "表名";
this.treeView1.Nodes.Add(myRootNode);
myFirstDt = new DataTable();//你在数据库里面获取的表
try
{
if( (myFirstDt.Rows.Count > 0) && (myFirstDt != null))
{
foreach (DataRow firstRow in myFirstDt.Rows)
{
myFirstNode = new TreeNode();
if (firstRow["name"] != null)
{
myFirstNode.Text = firstRow["name"].ToString();
myRootNode.Nodes.Add(myFirstNode);
myScendDt = this.GetDataTableName(myFirstNode.Text);//GetDataTableName是一个自定义函数,根据第一个节点读取第二个节点的数据
if( (myScendDt.Rows.Count > 0) && (myScendDt != null))
{
foreach (DataRow scendRow in myScendDt.Rows)
{
myScendNode = new TreeNode();
if (scendRow["name"] != null)
{
myScendNode.Text = scendRow["name"].ToString();
myFirstNode.Nodes.Add(myScendNode);
}
}
}
}
}
}
}
catch(Exception e)
{
MessageBox.Show(e.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
if (myRootNode.Nodes.Count > 0)
{
this.treeView1.SelectedNode = myRootNode.Nodes[0];
}
this.treeView1.EndUpdate();
this.Cursor = Cursors.Default;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
private void CreateTreeViewRecursive(TreeNodeCollection nodes, DataTable dataSource, int parentid)
{
string filter;
filter = string.Format("父标识号={0}", parentid); //从0开始,可以自设
DataRow[] drarr = dataSource.Select(filter);
TreeNode node;
foreach (DataRow dr in drarr)
{
node = new TreeNode();
node.Text = (string)dr["节点名称"];
node.Tag = (int)dr["标识号"];
nodes.Add(node);
CreateTreeViewRecursive(node.Nodes, dataSource, (int)node.Tag);
}
}
你试试看这个对你有用不?
{
string filter;
filter = string.Format("父标识号={0}", parentid); //从0开始,可以自设
DataRow[] drarr = dataSource.Select(filter);
TreeNode node;
foreach (DataRow dr in drarr)
{
node = new TreeNode();
node.Text = (string)dr["节点名称"];
node.Tag = (int)dr["标识号"];
nodes.Add(node);
CreateTreeViewRecursive(node.Nodes, dataSource, (int)node.Tag);
}
}
你试试看这个对你有用不?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
private void BindTree()
{
DataTable dtGroup = new DataTable();
dtGroup = MainForm.MainWebService.ExecuteReaderBySQL("数字化工管系统", "select * from User_Group");//获取SQL中的数据源
treeView1.Nodes.Clear();
DataTable dtRoot = new DataTable();
int userGroup = Convert.ToInt32(MainForm.UserInfoArray[0]);//此处userGroup可以直接赋值为0
AddTreeNodes(userGroup,(TreeNode)null, dtGroup);
}
/// <summary> 添加单位信息
///
/// </summary>
/// <param name="PartentId"></param>
/// <param name="pnode"></param>
/// <param name="dtGroup"></param>
private void AddTreeNodes(int PartentId, TreeNode pnode, DataTable dtGroup)
{
//dtGroup = GetData("select * from User_Group");// 单位节点数据源
DataView dvTree = new DataView(dtGroup);
dvTree.RowFilter = "pid = " + PartentId;
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pnode == null)
{
Node.Text = Row["group_name"].ToString();
Node.Name = Row["id"].ToString();
treeView1.Nodes.Add(Node);
AddTreeNodes((int)Row["id"], Node, dtGroup);
}
else
{
Node.Text = Row["group_Name"].ToString();
Node.Name = Row["id"].ToString();
pnode.Nodes.Add(Node);
AddTreeNodes((int)Row["id"], Node, dtGroup);
}
}
}
数据库结构
列 id 组ID
列pid 父节点ID
列Group_name 节点名称
楼上的,你给的是WebForm中用的Treeview生成。。 LZ都注明要WinForm中用的了 。囧ing
{
DataTable dtGroup = new DataTable();
dtGroup = MainForm.MainWebService.ExecuteReaderBySQL("数字化工管系统", "select * from User_Group");//获取SQL中的数据源
treeView1.Nodes.Clear();
DataTable dtRoot = new DataTable();
int userGroup = Convert.ToInt32(MainForm.UserInfoArray[0]);//此处userGroup可以直接赋值为0
AddTreeNodes(userGroup,(TreeNode)null, dtGroup);
}
/// <summary> 添加单位信息
///
/// </summary>
/// <param name="PartentId"></param>
/// <param name="pnode"></param>
/// <param name="dtGroup"></param>
private void AddTreeNodes(int PartentId, TreeNode pnode, DataTable dtGroup)
{
//dtGroup = GetData("select * from User_Group");// 单位节点数据源
DataView dvTree = new DataView(dtGroup);
dvTree.RowFilter = "pid = " + PartentId;
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pnode == null)
{
Node.Text = Row["group_name"].ToString();
Node.Name = Row["id"].ToString();
treeView1.Nodes.Add(Node);
AddTreeNodes((int)Row["id"], Node, dtGroup);
}
else
{
Node.Text = Row["group_Name"].ToString();
Node.Name = Row["id"].ToString();
pnode.Nodes.Add(Node);
AddTreeNodes((int)Row["id"], Node, dtGroup);
}
}
}
数据库结构
列 id 组ID
列pid 父节点ID
列Group_name 节点名称
楼上的,你给的是WebForm中用的Treeview生成。。 LZ都注明要WinForm中用的了 。囧ing
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
private
void
CreateTreeViewRecursive(TreeNodeCollection
nodes,
DataTable
dataSource,
int
parentid)
{
string
filter;
filter
=
string.Format("父标识号={0}",
parentid);
//从0开始,可以自设
DataRow[]
drarr
=
dataSource.Select(filter);
TreeNode
node;
foreach
(DataRow
dr
in
drarr)
{
node
=
new
TreeNode();
node.Text
=
(string)dr["节点名称"];
node.Tag
=
(int)dr["标识号"];
nodes.Add(node);
CreateTreeViewRecursive(node.Nodes,
dataSource,
(int)node.Tag);
}
}
你试试看这个对你有用不?
void
CreateTreeViewRecursive(TreeNodeCollection
nodes,
DataTable
dataSource,
int
parentid)
{
string
filter;
filter
=
string.Format("父标识号={0}",
parentid);
//从0开始,可以自设
DataRow[]
drarr
=
dataSource.Select(filter);
TreeNode
node;
foreach
(DataRow
dr
in
drarr)
{
node
=
new
TreeNode();
node.Text
=
(string)dr["节点名称"];
node.Tag
=
(int)dr["标识号"];
nodes.Add(node);
CreateTreeViewRecursive(node.Nodes,
dataSource,
(int)node.Tag);
}
}
你试试看这个对你有用不?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询