JSTree添加节点到子节点
问题描述:
我正在使用JSTree的MVC项目,我试图将子节点添加到树,但是我得到一个空的参考错误对象引用未设置为线上的对象的实例subGroupNode.children.Add(itemNode);
我想这是因为subGroupNode.Children
是空的。在之前的foreach循环中创建孩子的时候怎么会这样呢?JSTree添加节点到子节点
public JsonResult GetJsTree3Data()
{
var marketGroups = new List<JsTree3Node>();
// Create our root node and ensure it is opened
var root = new JsTree3Node()
{
id = Guid.NewGuid().ToString(),
text = "Market Items",
state = new State(true, false, false)
};
foreach (var group in GenerateGroups(connString))
{
if (group.marketParentGroup == 0)
{
var node = JsTree3Node.NewNode(group.id_str);
node.text = group.name;
node.state = new State(false, false, false);
marketGroups.Add(node);
}
}
foreach (var marketGroup in marketGroups)
{
foreach (var subGroup in GenerateGroups(connString))
{
if (subGroup.marketParentGroup.ToString() == marketGroup.id)
{
var childNodes = new List<JsTree3Node>();
var childNode = new JsTree3Node();
childNode.id = subGroup.id_str;
childNode.text = subGroup.name;
childNode.state = new State(false, false, false);
childNodes.Add(childNode);
var subGroupNode = new JsTree3Node();
subGroupNode.id = subGroup.id_str;
subGroupNode.text = subGroup.name;
subGroupNode.state = new State(false, false, false);
subGroupNode.children = childNodes;
marketGroup.children.Add(subGroupNode);
}
}
}
return Json(root, JsonRequestBehavior.AllowGet);
}
答
我创建第二个名单一样的第一和比较这两个清单解决问题。
public JsonResult GetJsTree3Data()
{
var marketGroups = new List<JsTree3Node>();
var marketSubGroups = new List<JsTree3Node>();
foreach (var group in GenerateGroups(connString))
{
var node = JsTree3Node.NewNode(group.id_str);
node.text = group.name;
node.state = new State(false, false, false);
node.parentId = group.marketParentGroup;
marketSubGroups.Add(node);
}
// Create our root node and ensure it is opened
var root = new JsTree3Node()
{
id = Guid.NewGuid().ToString(),
text = "Market Items",
state = new State(true, false, false)
};
foreach (var group in marketSubGroups)
{
var node = JsTree3Node.NewNode(group.id);
node.text = group.text;
node.state = new State(false, false, false);
marketGroups.Add(node);
}
foreach (var marketGroup in marketGroups)
{
foreach (var subGroup in marketSubGroups)
{
if (subGroup.parentId.ToString() == marketGroup.id)
{
var subGroupNode = new JsTree3Node();
subGroupNode.id = subGroup.id;
subGroupNode.text = subGroup.text;
subGroupNode.state = new State(false, false, false);
marketGroup.children.Add(subGroupNode);
}
}
}
root.children = marketGroups;
return Json(root, JsonRequestBehavior.AllowGet);
}
我没有看到你加'children'属性'subGroupNode'对象 –
感谢replyng尼古拉,我以为我是在添加行'subGroupNode.children.Add(itemNode)的subChildNode;' –
因此,在使用'Add'方法(我相信数组方法)之前,您应该先创建该属性并在其中分配一个空数组?至少这是如何在JavaScript中工作。 –