private void PowerManager_Load(object sender, EventArgs e)
{
//加载数据到treeview里面
DataTable dtb = bluser.GetUser();
rgvuserinfo.DataSource = dtb;
DataTable dt = bll.GetParentNode(0);
for (int i = 0; i < dt.Rows.Count; i++)
{
RadTreeNode node = new RadTreeNode();
node.Text = dt.Rows[i][0].ToString();
node.Value = dt.Rows[i][1].ToString();
powerTv.Nodes.Add(node);
AddNodes(node);
}
}
//添加根据父节点添加子节点 方法名第一个字大写!
public void AddNodes(RadTreeNode pnode)
{
int cc=Convert.ToInt32(pnode.Value)+1;
DataTable dt = bll.GetParentNode(cc);
for (int i = 0; i < dt.Rows.Count; i++)
{
RadTreeNode node = new RadTreeNode();
node.Text = dt.Rows[i][0].ToString();
node.Value = dt.Rows[i][1].ToString();
pnode.Nodes.Add(node);
AddNodes(node); //迭代把所有的子节点都加载出来
}
}
private void radButton2_Click(object sender, EventArgs e)
{
this.Close();
}
//双击选择框的内容触发
private void rgvuserinfo_DoubleClick(object sender, EventArgs e)
{
//node.Value 存的是顺序
string PowerGroup = rgvuserinfo.SelectedRows[0].Cells[3].Value.ToString();
string[] Groups = PowerGroup.Split(','); //Groups[i]存的是是否选中
//我先获得控件中所有的节点, nodes
List<RadTreeNode> nodes = GetAllNodes(powerTv.Nodes);
//在进入新的选择的时候先清除所有以选择的
foreach (RadTreeNode item in nodes)
{
item.Checked = false;
}
//然后重新选择
foreach (RadTreeNode item in nodes)
{
for (int i = 0; i < Groups.Length; i++)
{
if (item.Value.ToString() == i.ToString()) //当我顺序匹配的时候
{
//Groups[i]存的值 == 1的时候,我设置为true. else is false!
item.Checked = (Groups[i] == "1");
}
}
}
}
List<RadTreeNode> nodes = new List<RadTreeNode>(); //用来保存节点的集合
private void radButton1_Click(object sender, EventArgs e)
{
//保存,获得选中的值,按顺序获得节点上面选择菜单的值 将泛型转换成Linq类型 并且去除重复
IQueryable<RadTreeNode> nodes = GetAllNodes(powerTv.Nodes).Distinct().AsQueryable();
//转换成IQueryable对象,然后再通过指定的列排序
nodes = nodes.OrderBy(c => int.Parse(c.Value.ToString()));
string values="";
foreach (RadTreeNode item in nodes)
{
values+=(item.Checked ? "1" : "0") + ",";
}
values=values.Trim(',');
MessageBox.Show(values);
}
/// <summary>
/// 获得控件上所有的节点子节点
/// </summary>
/// <param name="parentNode">节点集合,第一次为powerTv.Nodes</param>
/// <returns></returns>
private List<RadTreeNode> GetAllNodes(RadTreeNodeCollection parentNode)
{
if (parentNode != null)
{
foreach (RadTreeNode item in parentNode) //遍历当前节点,添加之后获得子节点继续添加遍历
{
nodes.Add(item); //添加第一层,二层,三层,四层....
GetAllNodes(item.Nodes); //调用本方法,迭代!循环获得所有的子节点。N层都可以
}
}
return nodes;
}
treeview加载数据以及gridview双击时加载treeview是否选中,留个脚印
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.