这个是自己写的一个TreeView绑定控件,给你LOOKLOOK
public class KTreeView : TreeView
{
#region
private string _Field_ID;
private string _Field_Name;
private string _Field_ParentID;
public string Field_ParentID
{
get { return _Field_ParentID; }
set { _Field_ParentID = value; }
}
public string Field_Name
{
get { return _Field_Name; }
set { _Field_Name = value; }
}
public string Field_ID
{
get { return _Field_ID; }
set { _Field_ID = value; }
}
#endregion
public void BindDataFromTable(DataTable _DataTable)
{
DataView KDataView = new DataView(_DataTable);
KDataView.RowFilter = this.Field_ParentID + " is null";
//KDataView.Sort = this.Field_ID.ToString();
KTreeNode[] kTreeNodes = new KTreeNode[KDataView.Count];
for (int i = 0; i < KDataView.Count; i++)
{
DataRowView row = KDataView[i];
kTreeNodes[i] = new KTreeNode();
kTreeNodes[i].TextField = row[this.Field_Name].ToString();
kTreeNodes[i].ValueField = row[this.Field_ID].ToString();
AddChildRows(kTreeNodes[i],KDataView);
}
this.BeginUpdate();
this.Nodes.AddRange(kTreeNodes);
this.EndUpdate();
}
private void AddChildRows(KTreeNode kTreeNode,DataView kDataView)
{
DataRow[] rows = kDataView.Table.Select(this.Field_ParentID + "= '" + kTreeNode.ValueField +"'");
KTreeNode[] kTreeNodes = new KTreeNode[rows.Length];
int i=0;
foreach (DataRow row in rows)
{
kTreeNodes[i] = new KTreeNode();
kTreeNodes[i].TextField = row[this.Field_Name].ToString();
kTreeNodes[i].ValueField = row[this.Field_ID].ToString();
AddChildRows(kTreeNodes[i], kDataView);
i++;
}
kTreeNode.Nodes.AddRange(kTreeNodes);
}
public class KTreeNode : TreeNode
{
private string _TextField;
private string _ValueField;
public string ValueField
{
get { return _ValueField; }
set { _ValueField = value; }
}
public string TextField
{
get { return _TextField; }
set { this.Text = _TextField = value; }
}
}
}