大家都知道EXT.NET有一个非常好用的树形节点即ext:TreePanel。那么下面我们来讲解一下它绑定的用法。
第一种 纯JS绑定:
var Area;
var Provinces;
当要组成树形结构的数据都已经取出来的时候,我们就要像如下代码进行组装树形了:
function checkAreaFinish() {
var root = App.AreaTree.getRootNode();//获取要添加到控件的跟节点
//设置默认值
var nodeID = "";
var text = "";
for (var i in Area) {
var areaObj = Area[i];
// text显示的文本;leaf是否末级跟节点; checked是否选中
var node = root.appendChild({ text: areaObj.AreaSName, id: areaObj.AreaID, leaf: false, checked: true });
for (var j in Provinces) {
var pobj = Provinces[j];
if (pobj.AreaID == areaObj.AreaID) {
node.appendChild({ text: pobj.AddressName, id: pobj.AddressID, leaf: true, checked: false });
}
}
nodeID = nodeID + areaObj.AreaID + ",";
text = text + areaObj.AreaSName + ",";
}
//这个是给节点赋初始值,因为虽然展开后你是选中了,但是实际上控件没值,这里不贴图,大家可以试试
App.Area.setValue(nodeID.substr(0, nodeID.length - 1), text.substr(0, text.length - 1), false);
App.AreaID.setValue(nodeID.substr(0, nodeID.length - 1));
}
第二种后台绑定:
public string GetOrgList(bool IsShowCheckBox, bool isShowLowest = true)
{
//获取前台传入的参数
string Id = Request.Params["Id"];
Id = Id.Equals("root") ? "" : Id;
string orgSort = Request.Params["OrgSort"] ?? "";
return GetUserOrgList(IsShowCheckBox, isShowLowest);
}
private string GetUserOrgList(bool IsShowCheckBox, bool isShowLowest = true)
{
var tnc = new NodeCollection();
string userId = UserId;
//这里是获取一个实体,你可以换成其他你方便的 比如datatable等
IEnumerable<CYOrg> Orgs = Author.GetUserOrgs(userId).Select(s => s.OriginalOrg).OrderBy(f => f.GlobalOrder);
if (!isShowLowest)
{
Orgs = Orgs.Where(s => s.OrgSort == OrgNature.法人单位 || s.OrgSort == OrgNature.项目部);
}
//循环附加组件节点
foreach (CYOrg org in Orgs)
{
tnc.Add(ConstructTreeNode(org));
}
if (IsShowCheckBox)
{
tnc.AsParallel().ForAll(t => t.Checked = false);
}
string text = tnc.ToJson();
return text;
}
/// <summary>
/// 构建TreeNode
/// </summary>
/// <param name="org"></param>
/// <returns></returns>
private static Node ConstructTreeNode(CYOrg org)
{
var tn = new Node
{
Text = org.OrgSName,
NodeID = org.OrgID,
Leaf = org.OrgSort == OrgNature.项目部 ? true : false
//如果加上这个,界面上有树形控件并且用的是这个方法,不管哪里都会弹出这个标签
//Qtip = org.OrgSort.ToString()
};
return tn;
}