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是否選中,留個腳印
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.