我很幸运使用C#MVC 2和3填充EXT JS组合框和列表框,但是现在我试图解决加载EXT JS树形面板的问题。到目前为止,我无法从放置在控制器上的任何内容加载树。
现在,我正在尝试简单地从控制器返回静态数据,例如:
public ActionResult TreeFill()
{
var stuff = "[{ text: Type1, id: 100, leaf: false, cls: 'folder', children: [{ text: 'Client 1', id: 1, leaf: true, cls: 'file' },{ text: 'Client 2', id: 2, leaf: true, cls: 'file' },{ text: 'Client 3', id: 3, leaf: true, cls: 'file' },{ text: 'Client 4', id: 4, leaf: true, cls: 'file' }]}";
return Json(new {stuff},JsonRequestBehavior.AllowGet);
}
...而且我显然对此很麻烦,但这是一个起点(从某种意义上说,什么不起作用通常会导致什么起作用)。我现在意识到我什至没有一个从控制器加载树的好起点。我的暗示是,我需要从数据库返回原始数据,并通过循环将所有数据格式化为“ Json”类型可以使用的格式。我在网上找不到关于该主题的很多信息,因此任何人可以提供的指导将不胜感激。如果有任何成功,我会在这里跟进。谢谢!
参考方案
这是一些我用来加载Ext Tree的JavaScript-我知道这不是100%的工作,但希望能对您有所帮助:
tree.setRootNode(new Ext.tree.AsyncTreeNode({ id: 0, text: "Subjects", expandable: false, expanded: true }));
loadTree(function(d) {
tree.setRootNode(new Ext.tree.AsyncTreeNode({ id: 0, text: "Subjects", children: d, expandable: false, expanded: true }));
});
function loadTree(callback) {
runAjax("MyServiceBlahBlahBlah.asmx/Foo", "{ItemType:" + ItemType + "}",
function(data) {
cleanTree(data.d);
callback(data.d);
});
}
//hmmm - cleanTree isn't a good name for this function, not sure what I was thinking when I named it...
function cleanTree(data, expand) {
for (var i = 0; i < data.length; i++) {
data[i].checked = false;
if (expand) data[i].expanded = true;
cleanTree(data[i].children, expand);
}
}
这是一些我用来构建JSON的C#。 Soryr向您扔厨房水槽-再次,希望其中一些可以帮助您:)
顺便说一句-我使用了一些不同的Web窗口小部件工具包,而EXT是到目前为止我最喜欢的-很好的选择!
public static object GetSubjectHierarchyJSON(Func<vwHierarchicalSubject, bool> InitialPredicate, HierarchicalSubjectDAO DAO, int ItemType) {
List<LINQLayer.vwHierarchicalSubject> TempSource = DAO.GetAll(DAO.UserID, ItemType).
OrderBy(V => V.ParentSubjectName).ThenBy(V => V.LevelNumber).ThenBy(V => V.SubjectName).ToList();
var result = new List<object>();
foreach (vwHierarchicalSubject V in TempSource.Where(InitialPredicate).OrderBy(v => v.SubjectName))
result.Add(BuildJSON(V, TempSource));
return result;
}
private static object BuildJSON(vwHierarchicalSubject V, List<vwHierarchicalSubject> TempSource) {
IEnumerable<vwHierarchicalSubject> Children =
TempSource.Where(x => x.ParentID.HasValue && x.ParentID.Value == V.id).OrderBy(v => v.SubjectName);
int id = V.id;
string subText = V.SubjectName.Replace("&", "&");
if (Children.Count() == 0)
return new { id = V.id, text = subText, children = new List<object>(), expanded = true };
else {
var result = new { id = V.id, text = subText, children = new List<object>() };
foreach (vwHierarchicalSubject vElement in Children)
result.children.Add(BuildJSON(vElement, TempSource));
return result;
}
}
如何在没有for循环的情况下在Javascript中使用Django模板标签 - javascript我想在JavaScript中使用模板变量:我的问题是在javascript代码中使用for循环,for循环之间的所有事情都会重复..但我不想要....下面粘贴了我的代码..有人可以告诉我更好的方法吗这..因为这看起来很丑..这是我的代码: {% block extra_javascript %} <script src="/static/js…
Mongo抛出“元素名称'名称'无效”异常 - c#我正在更新一个简单的字段。var filterDocument = new BsonDocument { { "name", "alice" } }; var newDocument = new BsonDocument { { "name", "Alice" } }; coll…
T-SQL等价的正则表达式'\ b' - c#我正在将利用regex的CLR函数转换为SQL函数。我知道SQL Server并不完全支持正则表达式,但是我只需要一种情况就可以搜索单词。搜索字段值:{"Id":1234, "Title": "The quick brown"}.NET中的正则表达式模式:'\b' + '…
将字符串分配给numpy.zeros数组[重复] - pythonThis question already has answers here: Weird behaviour initializing a numpy array of string data (4个答案) …
您如何在列表内部调用一个字符串位置? - python我一直在做迷宫游戏。我首先决定制作一个迷你教程。游戏开发才刚刚开始,现在我正在尝试使其向上发展。我正在尝试更改PlayerAre变量,但是它不起作用。我试过放在列表内和列表外。maze = ["o","*","*","*","*","*",…