我想问一个问题,就是我有一个TreeView控件其中CheckBox已经可以实现联动操作.我现在想让它有编辑功能.也就是说我想读进来一个字符串(1,2,43,44,3,49,4,53)和数中节点的Value 数值进行比较.如果两个数值相等,那么就让其对应勾选的副选框被选中.其中数型控件读取数据是这样的
public void LoadData(String strNodeValue)
{
TreeView1.Nodes.Clear(); DataTable DT = new DataTable();
Manageuse M = new Manageuse(); M.FileID = 0; DT = M.TreeView1DataBind(); foreach (DataRow treeRowRoot in DT.Rows)
{
TreeNode rootNode = new TreeNode(); rootNode.Text = treeRowRoot["FilesName"].ToString();
rootNode.Value = treeRowRoot["FileID"].ToString(); TreeView1.Nodes.Add(rootNode); int pid = int.Parse(treeRowRoot["FileID"].ToString()); CreateNode(rootNode, pid);
} TreeNode tnCurrentNode = TreeView1.FindNode(strNodeValue); if (tnCurrentNode != null)
{
//获得焦点
tnCurrentNode.Select();
TreeNode tmp = tnCurrentNode; tmp.ExpandAll();
while (tmp.Parent != null)
{
tmp = tmp.Parent;
tmp.ExpandAll();
}
}
} public void CreateNode(TreeNode parentnode, int preID)
{
DataTable DT = new DataTable();
Manageuse M = new Manageuse(); M.FileID = preID; DT = M.TreeView1DataBind(); foreach (DataRow rw in DT.Rows)
{
TreeNode childnode = new TreeNode();
childnode.Text = rw["FilesName"].ToString();
childnode.Value = rw["FileID"].ToString(); parentnode.ChildNodes.Add(childnode); int pid = int.Parse(rw["FileID"].ToString());
CreateNode(childnode, pid);
}
}
我应该怎么做.另有Q币相赠
public void LoadData(String strNodeValue)
{
TreeView1.Nodes.Clear(); DataTable DT = new DataTable();
Manageuse M = new Manageuse(); M.FileID = 0; DT = M.TreeView1DataBind(); foreach (DataRow treeRowRoot in DT.Rows)
{
TreeNode rootNode = new TreeNode(); rootNode.Text = treeRowRoot["FilesName"].ToString();
rootNode.Value = treeRowRoot["FileID"].ToString(); TreeView1.Nodes.Add(rootNode); int pid = int.Parse(treeRowRoot["FileID"].ToString()); CreateNode(rootNode, pid);
} TreeNode tnCurrentNode = TreeView1.FindNode(strNodeValue); if (tnCurrentNode != null)
{
//获得焦点
tnCurrentNode.Select();
TreeNode tmp = tnCurrentNode; tmp.ExpandAll();
while (tmp.Parent != null)
{
tmp = tmp.Parent;
tmp.ExpandAll();
}
}
} public void CreateNode(TreeNode parentnode, int preID)
{
DataTable DT = new DataTable();
Manageuse M = new Manageuse(); M.FileID = preID; DT = M.TreeView1DataBind(); foreach (DataRow rw in DT.Rows)
{
TreeNode childnode = new TreeNode();
childnode.Text = rw["FilesName"].ToString();
childnode.Value = rw["FileID"].ToString(); parentnode.ChildNodes.Add(childnode); int pid = int.Parse(rw["FileID"].ToString());
CreateNode(childnode, pid);
}
}
我应该怎么做.另有Q币相赠
{
string strNodeValue = "1,2,43,44,3,49,4,53";
if (!IsPostBack) LoadData(strNodeValue);
}
public void LoadData(String strNodeValue)
{
strNodeValue = "," + strNodeValue + ",";
TreeView1.Nodes.Clear(); DataTable DT = new DataTable();
#region 模拟一些测试数据
//注:数据从数据读取一次就够了,没必要在递归调用中多次读取-这样性能太低
DT.Columns.Add("FilesName");
DT.Columns.Add("FileID");
DT.Columns.Add("PreID");
DT.Rows.Add(new object[] {"aaaaa",1,0 });
DT.Rows.Add(new object[] { "bbbbb", 2, 0 });
DT.Rows.Add(new object[] { "ccccc", 3, 0 });
DT.Rows.Add(new object[] { "eeeee", 4, 0 });
DT.Rows.Add(new object[] { "fffff", 5, 0 });
DT.Rows.Add(new object[] { "ggggg", 6, 10 });
DT.Rows.Add(new object[] { "hhhhh", 7, 1 });
DT.Rows.Add(new object[] { "iiiii", 8, 1 });
DT.Rows.Add(new object[] { "jjjjj", 9, 3 });
DT.Rows.Add(new object[] { "kkkkk", 10, 2 });
DT.Rows.Add(new object[] { "llllll", 11, 10 });
DT.Rows.Add(new object[] { "mmmmmm", 43, 2 });
DT.Rows.Add(new object[] { "nnnnnn", 44, 2 });
DT.Rows.Add(new object[] { "oooooo", 53, 4 });
DT.AcceptChanges();
#endregion DataRow[] rows = DT.Select("[preID]=0");
foreach (DataRow treeRowRoot in rows)
{
TreeNode rootNode = new TreeNode(); rootNode.Text = treeRowRoot["FilesName"].ToString();
rootNode.Value = treeRowRoot["FileID"].ToString(); TreeView1.Nodes.Add(rootNode);
int pid = int.Parse(treeRowRoot["FileID"].ToString());
DT.Rows.Remove(treeRowRoot); if (strNodeValue.IndexOf("," + pid.ToString() + ",") > -1)
rootNode.Checked = true; CreateNode(rootNode, pid, DT, strNodeValue);
}
} public void CreateNode(TreeNode parentnode, int preID, DataTable DT, string strNodeValue)
{
DataRow[] rows = DT.Select("[preID]='"+preID.ToString()+"'");
foreach (DataRow rw in rows)
{
TreeNode childnode = new TreeNode();
childnode.Text = rw["FilesName"].ToString();
childnode.Value = rw["FileID"].ToString(); parentnode.ChildNodes.Add(childnode);
int pid = int.Parse(rw["FileID"].ToString());
DT.Rows.Remove(rw); if (strNodeValue.IndexOf("," + pid.ToString() + ",") > -1)
{
childnode.Parent.Expand();
childnode.Checked = true;
} CreateNode(childnode, pid, DT, strNodeValue);
}
}