1、下面的例子生成部门树
private IEnumerable<object> GetDepartmentTreeNodes(int parentid = 0)
{
var nodes = DepartmentDal.Instance.GetChildren(parentid);
var treeNodes = from n in nodes
orderby n.Sortnum ascending
select
new {id = n.KeyId, text = n.DepartmentName, children = GetDepartmentTreeNodes(n.KeyId)};
return treeNodes;
}
public IEnumerable<Department> GetChildren(int parentid=0)
{
return GetAll().Where(d => d.ParentId == parentid);
}
2、获得所有操作按钮
/// <summary>
/// 获取所有操作按钮
/// </summary>
/// <returns></returns>
public string GetAllButtons()
{
var btns = from n in ButtonDal.Instance.GetAll()
orderby n.Sortnum
select n;
return JSONhelper.ToJson(btns.ToList());
}
3、创建treegrid的所有按钮列
/// <summary>
/// 创建treegrid的所有按钮列
/// </summary>
/// <returns></returns>
public string BuildNavBtnsColumns()
{
var list = ButtonDal.Instance.GetAll();
var json = from n in list
orderby n.Sortnum ascending
select new {title = n.ButtonText, field = n.ButtonTag, width = 60,align="center",
editor = new { type = "checkbox", options = new { @on = "√", off = "x" } }
};
return JSONhelper.ToJson(json);
}
4、与JObject、JArray配合使用
public JArray GetRoleNavBtns(IEnumerable<DataRow> btns, int parentId)
{
var navList = NavigationDal.Instance.GetList(parentId);
var dataRows = btns as DataRow[] ?? btns.ToArray();
var navigations = navList as Navigation[] ?? navList.ToArray();
JArray jArr = new JArray();
foreach (var n in navigations)
{
var jobj = new JObject(new JProperty("KeyId", n.KeyId),
new JProperty("NavTitle", n.NavTitle),
new JProperty("iconCls", n.iconCls),
new JProperty("Buttons", new JArray(from b in n.Buttons
select new JValue(b.ButtonTag))),
new JProperty("children", GetRoleNavBtns(dataRows, n.KeyId)));
var n1 = n;
var navbtns = dataRows.Where(b => (int) b["navid"] == n1.KeyId).Select(c=>c["ButtonTag"]).ToArray();
foreach (var button in ButtonDal.Instance.GetAll())
jobj.Add(new JProperty(button.ButtonTag, navbtns.Contains(button.ButtonTag) ? "√" : "x"));
jArr.Add(jobj);
}
return jArr;
}