- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用jsTree在我的 ASP.NET MVC 应用程序中显示分层数据的树结构。到目前为止,我能够访问数据(通过返回 JSON 数据的 Controller 方法)并显示树。我还可以选择树中的节点并且工作正常。下面是执行此操作的 jsTree 代码:
$('#tree').
bind('select_node.jstree', function(event, data) {
alert("Node is selected.");
}).
jstree({
"core": {},
"json_data": {
"ajax": {
type: 'POST',
url: '/Scenario/TreeData',
data: "id=" + <%= Model.Scenario.ScenarioID %>,
success: function(data, textStatus, xhr) {
if(data.failed) {
window.location.href = data.redirectToUrl;
}
}
}
},
"themes": {
"theme": "default",
"dots": true,
"icons": true
},
"ui": {
"select_limit": 1
},
"plugins": ["themes", "ui", "json_data"]
});
这是我的 TreeData 操作:
[HttpPost]
public ActionResult TreeData(int id)
{
var tree = new JsTreeModel();
Scenario scenario = repository.GetScenario(id);
if (scenario != null)
{
tree.data = new JsTreeData();
// [snip] Do the work to build the tree. [/snip]
return Json(tree);
}
var jsonData = new
{
failed = true,
redirectToUrl = Url.Action("NotFound")
};
return Json(jsonData);
}
我陷入困境的是,一旦我单击一个节点,我不确定如何从我的应用程序(通过 Controller )检索该特定节点的数据,显示它(大概在部分 View 中 - 所有我此时创建的 - 强类型部分 View ),然后提供将该部分 View 提交回服务器以更新数据的选项。
我不太确定从哪里开始。我的一个想法是扩展我的 TreeModel 类(C# 模型,可以更轻松地为树构建 JSON 数据)以在“数据”值中获取更多参数,这可以让我知道我正在尝试检索哪个模型。然而,这似乎并不那么优雅。
我是否遗漏了一些明显的东西?有人还有其他建议吗?谢谢!
最佳答案
我最终弄清楚了这一点,并希望分享以防其他人想做同样的事情。
我首先将 select_node.jstree 事件绑定(bind)到我的树,然后构建树(当然,所有这些都是在客户端完成的)。
$('#tree').
bind('select_node.jstree', function(event, data) {
var id = 1; // TODO - Get the ID from the current model.
var url = data.rslt.obj.children("a:eq(0)").attr("href");
$.ajax({
type: 'POST',
url: '/Scenario/' + url,
data: 'id=' + id,
success: function(data) {
$('#ajaxcontent').html(data);
}
});
}).jstree({
"core": {},
"json_data": {
"ajax": {
type: 'POST',
url: '/Scenario/TreeData',
data: "id=" + <%= Model.Scenario.ScenarioID % > ,
success: function(data, textStatus, xhr) {
if (data.failed) {
window.location.href = data.redirectToUrl;
}
}
}
},
"ui": {
"select_limit": 1
},
"plugins": ["themes", "ui", "json_data"]
});
请注意,我正在从节点获取 URL 值。我必须更改 JsTreeModel,以便可以更改节点上的 href 值。 (JSON 数据表示形式是 - data.attr.href)我在构建场景时设置了此值。每个节点都有自己的 URL。 (我传入 ID 参数,这样我就可以检索正确的场景服务器端。根据您的需要,这可能是必要的,也可能不是必要的。)
然后,我为 Controller 中的每个 URL 创建一个操作。我对数据执行需要执行的操作,然后将其返回到页面(通过前面显示的 AJAX 调用)。现在我知道我在做什么,这实际上是一个相当简单的解决方案。但是,由于缺乏文档,第一次弄清楚有点棘手。
希望这可以帮助别人!
关于jquery - 在 jsTree 中选择项目时访问 ASP.NET MVC 服务器端数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4973469/
我试图在不重新加载或刷新页面的情况下重新加载 jstree,重新加载应该发生在按钮的 onclick 上,因此当单击按钮时我调用 $("#tree-container").jstree('destro
在我的页面上,我有一个按钮,单击该按钮会刷新该页面上找到的 jstree。 现在,当 jstree 加载时,将从 2D 数组中读取数据,并根据该数组中找到的数据更改节点图标。我需要一个函数来刷新或重
我正在尝试使用 jstree 并在打开页面时打开一个节点及其所有父节点。这是我用来测试的html代码。 TEST1
有没有人尝试过使用类型插件更改 jstree 特定节点的颜色?而且我还想避免该节点上的点击事件。 我需要这样做以防止用户选择相同的节点。 最佳答案 关于如何更改任何被点击节点的颜色的示例: $(fun
我将 jsTree 与复选框插件一起使用。我将级联设置为“向下”。这很好用,除了当我想加载包含已选中和未选中节点的数据时,级联会覆盖节点的“状态”设置。例如。 var data = [ {"i
为了在jsTree中存储任意数据节点,我将自定义属性(例如 node-data)传递给 create_node方法。但我需要在单个属性中存储多条数据。 (例如姓名、年龄等)哪种格式最适合节点数据属性的
有没有办法以编程方式关闭 jsTree 中的上下文菜单?我实现了一种使用 show_contextmenu 在悬停时打开上下文菜单的方法,但我需要在鼠标离开时关闭它 最佳答案 好的,通过查看代码我找到
当还选择了父节点时,我在选择子节点时遇到了困难,还想打开子文件夹并选择所有子节点(不确定我是否说清楚)所以我知道如何通过以下方式获取所有子节点: selected_nodes = $("#demo")
我需要显示一个 JSTree 但不能展开和折叠。有什么办法可以实现吗? 在下面的链接中提到禁用展开和折叠在 jstree 中不可用,这似乎是一个错误。 https://groups.google.co
如何在 jsTree 1.0 中禁用移动,但不禁用 dnd 插件? 谢谢。 最佳答案 我找到了解决方案。 $("#tree").jstree({ //... "crrm" : {
我的 jstree 配置如下: var $proceduresTree = $('#procedures-tree'); $proceduresTree.jstree({ 'core' : {
我使用插件 Jstree 绘制文件夹和文件树。 我想获取顶部的文件夹列表,然后获取文件列表(文件夹和文件列表必须按字母顺序排序)。 这是我的树初始化函数: $('#jstree_demo_div').
这是我处理这个问题的最后手段。 问题是我无法从下面的示例数据中获取具体值。 我很着急,如果您能回答这个问题,我将不胜感激。 这是我的代码。 $("#organize").jstree( {
在我的网站中,我有一个下拉选择选项,列出了 MySQL 中可用的数据库。在每个数据库中,我都有一个名为树的表。每当选择选项更改为新数据库或发生页面重新加载时,我都会将数据库名称发布到 php 文件中。
我正在使用 jstree 并且 select_node.jstree 不会触发,这是代码 $(document).ready(function () { //$("#MySplitter").spli
要将节点添加到我的树中,我使用 JavaScript 推送: var parent1 = { "id": "parent1", "data": {extra:"some extra d
如何获取jsTree中的所有节点? 我正在用 xml 构建 jsTree Root -----A -----A1 -----A1.1
如果我没记错的话,当使用 jstree 时,如果检查了父节点,那么它的子节点也会被检查。像这样 我正在做的是,我正在进行 ajax 调用并仅加载父节点。我检查了父节点,当我展开父节点时,我正在进行另一
是否可以为 jsTree jQuery plugin/library 生成的类名添加前缀?如果没有,是否有已知的路径可以让单个页面共享两个样式不同的 jsTree 元素? 问题: 我有一个(基于 PH
我的 jsTree 包含在树加载时设置的 html 数据(请参阅下面的 javascript)。这工作正常。但是,我希望能够根据某些用户操作在 Ajax 请求中重新加载整个树。我基本上需要重新加载从
我是一名优秀的程序员,十分优秀!