DevExpress的TreeList要想在节点前面显示复选框,得修改属性OptionsView->ShowCheckBoxes=True
#region 获取被勾选的树值
/// <summary>
/// 角色ID
/// </summary>
String str = "";
/// <summary>
/// 角色名称
/// </summary>
String strname = "";
/// <summary>
/// 枚举树中所有结点。
/// </summary>
/// <param name="tree"></param>
/// <returns></returns>
public Hashtable GetCheckNodes(TreeList tree)
{
Hashtable ht = new Hashtable();
try
{ //首长循环获取已勾选的根结点
foreach (TreeListNode n in tree.Nodes)
{
if (n.Checked)
{
str = n.GetValue("OID").ToString();
var list = ListFunctionResource.Where(a => a.OID == str).ToList();
if (list.Count() > 0)
{
strname = n.GetValue("资源名称").ToString();
var q = _lists.FirstOrDefault(p => p.OID == str);
ht.Add(str, n.Checked);
}
}
else
{
str = n.GetValue("OID").ToString();
var _list = ListFunctionResource.Where(a => a.OID == str).ToList();
if (_list.Count() > 0)
{
strname = n.GetValue("资源名称").ToString();
var q = _lists.FirstOrDefault(p => p.OID == str);
ht.Add(str, n.Checked);
}
}
if (n.Nodes.Count > 0)
this.DoGetCheckNodes(ht, n);
}
}
catch (Exception Ex)
{
CMessageBox.ShowError(Ex.Message);
}
return ht;
}
/// <summary>
/// 剃归,扫描所有结点。
/// </summary>
/// <param name="list"></param>
/// <param name="parentNode"></param>
private void DoGetCheckNodes(Hashtable ht, TreeListNode parentNode)
{
//枚举当前结点的所有子结点
foreach (TreeListNode n in parentNode.Nodes)
{
if (n.Checked)
{
str = n.GetValue("OID").ToString();
var list = ListFunctionResource.Where(a => a.OID == str).ToList();
if (list.Count() > 0)
{
strname = n.GetValue("资源名称").ToString();
var q = _lists.FirstOrDefault(p => p.OID == str);
ht.Add(str, n.Checked);
}
}
else
{
str = n.GetValue("OID").ToString();
var _list = ListFunctionResource.Where(a => a.OID == str).ToList();
if (_list.Count() > 0)
{
strname = n.GetValue("资源名称").ToString();
var q = _lists.FirstOrDefault(p => p.OID == str);
ht.Add(str, n.Checked);
}
}
if (n.Nodes.Count > 0)
this.DoGetCheckNodes(ht, n);
}
}
#endregion