请给我一个从数据库中读数据关联到树节点上的例子,微软的示例中有吗,请告诉我从哪下一个? 谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void Page_Load(object sender, System.EventArgs e) { if(!IsPostBack) { DataTable dt=new DataTable(); dt=this.GetDataSource(); Session["dt"]=dt; BoundTreeview(this.TreeView1.Nodes,0); } } private DataTable GetDataSource() { DataTable dt=new DataTable("dt"); dt.Columns.Add(new DataColumn("ID",typeof(System.Int32))); dt.Columns.Add(new DataColumn("PID",typeof(System.Int32))); dt.Columns.Add(new DataColumn("NUM",typeof(System.Int32))); dt.Columns.Add(new DataColumn("NAME",typeof(System.String))); DataRow dr; dr=dt.NewRow(); dr["ID"]=1; dr["PID"]=0; dr["NUM"]=1; dr["NAME"]="1"; dt.Rows.Add(dr); dr=dt.NewRow(); dr["ID"]=2; dr["PID"]=1; dr["NUM"]=2; dr["NAME"]="2"; dt.Rows.Add(dr); dr=dt.NewRow(); dr["ID"]=3; dr["PID"]=1; dr["NUM"]=5; dr["NAME"]="ID3"; dt.Rows.Add(dr); dr=dt.NewRow(); dr["ID"]=4; dr["PID"]=0; dr["NUM"]=2; dr["NAME"]="ID4"; dt.Rows.Add(dr); dr=dt.NewRow(); dr["ID"]=5; dr["PID"]=4; dr["NUM"]=1; dr["NAME"]="ID5"; dt.Rows.Add(dr); dr=dt.NewRow(); dr["ID"]=6; dr["PID"]=0; dr["NUM"]=3; dr["NAME"]="ID6"; dt.Rows.Add(dr); dr=dt.NewRow(); dr["ID"]=7; dr["PID"]=0; dr["NUM"]=1; dr["NAME"]="ID7"; dt.Rows.Add(dr); dr=dt.NewRow(); dr["ID"]=8; dr["PID"]=7; dr["NUM"]=1; dr["NAME"]="ID8"; dt.Rows.Add(dr); dr=dt.NewRow(); dr["ID"]=9; dr["PID"]=8; dr["NUM"]=1; dr["NAME"]="ID9"; dt.Rows.Add(dr); dr=dt.NewRow(); dr["ID"]=10; dr["PID"]=8; dr["NUM"]=2; dr["NAME"]="ID10"; dt.Rows.Add(dr); dr=dt.NewRow(); dr["ID"]=11; dr["PID"]=7; dr["NUM"]=2; dr["NAME"]="ID11"; dt.Rows.Add(dr); return dt; } private void BoundTreeview(TreeNodeCollection TreeNodes ,int ParentID) { DataTable dt=new DataTable(); dt=(DataTable)Session["dt"]; DataView treeDV = new DataView(); int treeId; TreeNode treeTemp; string treeName; treeDV.Table = dt; treeDV.RowFilter = "ID<>'" + ParentID + "' and PID='" + ParentID + "'"; treeDV.Sort="NUM"; foreach(DataRowView treeDVrow in treeDV) { treeTemp=new TreeNode(); treeName = treeDVrow["NAME"].ToString(); treeId = Convert.ToInt32(treeDVrow["ID"].ToString()); treeTemp.ID = treeId.ToString(); treeTemp.Text = treeName; treeTemp.CheckBox=true; treeTemp.Expanded=true; TreeNodes.Add(treeTemp); BoundTreeview(TreeNodes[TreeNodes.Count - 1].Nodes, treeId); } } /// <summary> /// 绑定TreeView控件 /// </summary> public static void BindTreeView(DataTable tb,TreeView tv,string fieldID,string fieldName,string fieldParent) { tv.Font = Common.MySettings.myFont; if(tb.Rows.Count<1) return; if(!(tb.Columns.Contains(fieldID) & tb.Columns.Contains(fieldName))) { Common.ShowMsg("输入的参数不正确,字段名在表中不存在,请与系统开发人员联系"); return; } if(fieldParent != null) if( !tb.Columns.Contains(fieldParent)) { Common.ShowMsg("输入的参数不正确,字段名在表中不存在,请与系统开发人员联系"); return; } tv.Nodes.Clear(); AddTreeNode(null,tb,tv.Nodes,fieldID,fieldName,fieldParent); }// /// <summary> /// 通过此方法(递归)实现TreeView控件的绑定 /// </summary> public static void AddTreeNode(string mID,DataTable tb,TreeNodeCollection mNodes,string fieldID,string fieldName,string fieldParent) { string rowFilter = ""; DataRow[] rows = new DataRow[tb.Rows.Count]; if(fieldParent != null) { if(mID == null) rowFilter = "IsNull(" + fieldParent + ",'0')='0' OR " + fieldParent + "=''" ; else rowFilter = fieldParent + "='" + mID + "'" ; rows = tb.Select(rowFilter); } else tb.Rows.CopyTo(rows,0); if(rows != null) if(rows.Length>0) for(int i=0;i<rows.Length;i++) { TreeNode newNode = new TreeNode(rows[i][fieldName].ToString()); newNode.Tag = rows[i]; mNodes.Add(newNode); if(fieldParent != null) AddTreeNode(rows[i][fieldID].ToString(),tb,newNode.Nodes,fieldID,fieldName,fieldParent); if(mID == null) newNode.Expand(); } }// yohomonkey(思考中的猴)的代码好像可以 如何准确计算Label控件里文本行数? 怎样做程序“运行中”的提示? T-SQL语句都要大写? 请教一个关于缩略图的问题! 获取MAC地址 请问要想实现选中父节点时所有子节点都被选中,单击某个子节点则该子节点的父节点也被选中,怎样实现?急等。。。 c# 客户端对多台服务器循环发送、接收数据(socket) 用什么方法把大文件从一台机子复制到另一台机子 Winform中如何实现像Repeater类似的绑定 .net2003下不能创建工程,求助!! 我想把richTextBox框中的文本和格式保存成bmp图片,怎么办? 请问你们有没有关于C#语言设计程序界面的电子书籍和资料
{
if(!IsPostBack)
{
DataTable dt=new DataTable();
dt=this.GetDataSource();
Session["dt"]=dt;
BoundTreeview(this.TreeView1.Nodes,0);
}
}
private DataTable GetDataSource()
{
DataTable dt=new DataTable("dt");
dt.Columns.Add(new DataColumn("ID",typeof(System.Int32)));
dt.Columns.Add(new DataColumn("PID",typeof(System.Int32)));
dt.Columns.Add(new DataColumn("NUM",typeof(System.Int32)));
dt.Columns.Add(new DataColumn("NAME",typeof(System.String)));
DataRow dr;
dr=dt.NewRow();
dr["ID"]=1;
dr["PID"]=0;
dr["NUM"]=1;
dr["NAME"]="1";
dt.Rows.Add(dr); dr=dt.NewRow();
dr["ID"]=2;
dr["PID"]=1;
dr["NUM"]=2;
dr["NAME"]="2";
dt.Rows.Add(dr); dr=dt.NewRow();
dr["ID"]=3;
dr["PID"]=1;
dr["NUM"]=5;
dr["NAME"]="ID3";
dt.Rows.Add(dr); dr=dt.NewRow();
dr["ID"]=4;
dr["PID"]=0;
dr["NUM"]=2;
dr["NAME"]="ID4";
dt.Rows.Add(dr); dr=dt.NewRow();
dr["ID"]=5;
dr["PID"]=4;
dr["NUM"]=1;
dr["NAME"]="ID5";
dt.Rows.Add(dr); dr=dt.NewRow();
dr["ID"]=6;
dr["PID"]=0;
dr["NUM"]=3;
dr["NAME"]="ID6";
dt.Rows.Add(dr); dr=dt.NewRow();
dr["ID"]=7;
dr["PID"]=0;
dr["NUM"]=1;
dr["NAME"]="ID7";
dt.Rows.Add(dr);
dr=dt.NewRow();
dr["ID"]=8;
dr["PID"]=7;
dr["NUM"]=1;
dr["NAME"]="ID8";
dt.Rows.Add(dr);
dr=dt.NewRow();
dr["ID"]=9;
dr["PID"]=8;
dr["NUM"]=1;
dr["NAME"]="ID9";
dt.Rows.Add(dr);
dr=dt.NewRow();
dr["ID"]=10;
dr["PID"]=8;
dr["NUM"]=2;
dr["NAME"]="ID10";
dt.Rows.Add(dr);
dr=dt.NewRow();
dr["ID"]=11;
dr["PID"]=7;
dr["NUM"]=2;
dr["NAME"]="ID11";
dt.Rows.Add(dr);
return dt;
}
private void BoundTreeview(TreeNodeCollection TreeNodes ,int ParentID)
{
DataTable dt=new DataTable();
dt=(DataTable)Session["dt"];
DataView treeDV = new DataView();
int treeId;
TreeNode treeTemp;
string treeName;
treeDV.Table = dt;
treeDV.RowFilter = "ID<>'" + ParentID + "' and PID='" + ParentID + "'";
treeDV.Sort="NUM";
foreach(DataRowView treeDVrow in treeDV)
{
treeTemp=new TreeNode();
treeName = treeDVrow["NAME"].ToString();
treeId = Convert.ToInt32(treeDVrow["ID"].ToString());
treeTemp.ID = treeId.ToString();
treeTemp.Text = treeName;
treeTemp.CheckBox=true;
treeTemp.Expanded=true;
TreeNodes.Add(treeTemp);
BoundTreeview(TreeNodes[TreeNodes.Count - 1].Nodes, treeId);
}
}
/// 绑定TreeView控件
/// </summary>
public static void BindTreeView(DataTable tb,TreeView tv,string fieldID,string fieldName,string fieldParent)
{
tv.Font = Common.MySettings.myFont; if(tb.Rows.Count<1) return; if(!(tb.Columns.Contains(fieldID) & tb.Columns.Contains(fieldName)))
{
Common.ShowMsg("输入的参数不正确,字段名在表中不存在,请与系统开发人员联系");
return;
} if(fieldParent != null)
if( !tb.Columns.Contains(fieldParent))
{
Common.ShowMsg("输入的参数不正确,字段名在表中不存在,请与系统开发人员联系");
return;
} tv.Nodes.Clear();
AddTreeNode(null,tb,tv.Nodes,fieldID,fieldName,fieldParent);
}//
/// <summary>
/// 通过此方法(递归)实现TreeView控件的绑定
/// </summary>
public static void AddTreeNode(string mID,DataTable tb,TreeNodeCollection mNodes,string fieldID,string fieldName,string fieldParent)
{
string rowFilter = "";
DataRow[] rows = new DataRow[tb.Rows.Count]; if(fieldParent != null)
{
if(mID == null)
rowFilter = "IsNull(" + fieldParent + ",'0')='0' OR " + fieldParent + "=''" ;
else
rowFilter = fieldParent + "='" + mID + "'" ; rows = tb.Select(rowFilter);
}
else
tb.Rows.CopyTo(rows,0); if(rows != null)
if(rows.Length>0)
for(int i=0;i<rows.Length;i++)
{
TreeNode newNode = new TreeNode(rows[i][fieldName].ToString());
newNode.Tag = rows[i];
mNodes.Add(newNode);
if(fieldParent != null)
AddTreeNode(rows[i][fieldID].ToString(),tb,newNode.Nodes,fieldID,fieldName,fieldParent);
if(mID == null)
newNode.Expand();
}
}//