现在,我使用的是 ASP.NET TreeView,并且在页面中启用了复选框,并且通过使用节点值来存储从数据库获取的 id,在后面的 C# 代码中动态填充树。在回发时,我迭代节点并获取已检查的节点并将其存储回数据库中。
为了获得三态复选框(在 ASP.NET TreeView 中不可能),我想移动到 jQuery Treeview。最有前途的似乎是 Dynatree,地址为 http://wwwendt.de/tech/dynatree/doc/samples.html (点击左侧的持久性。)
还有其他一些带有复选框的免费 ASP.NET Treeview 可以使用吗?
为了填充动态树,我正在考虑将 UL 和 LI 元素写入 ASP.NET LiteralControl,然后在 html 中配置动态树以使用该 DIV 填充树。这是最好的方法吗?我是否按照文档中的建议将节点 id 放入 li id 中,以便我可以在后端读取它?
但是,我无法找到一种简单的方法来读取代码隐藏中的值以存储在数据库中。 即如何查看 C# 代码中是否选中了复选框节点? 文档是这样说的: //获取树的 JavaScript 对象副本 var dict = $("#tree").dynatree("getTree").toDict(); //...然后使用 Ajax 将其发送到您的服务器...
是否可以在回发按钮单击事件中以某种方式看到它,而不使用ajax,使用隐藏的asp.net控件并在回发中读取它?
最佳答案
一种方法是将隐藏字段设置为一个字符串,其中包含由选定字符分隔的所有选定 ID。在回发时,您可以通过使用分隔符分割字符串来获取要更新的 id 数组来处理此问题。
使用类似于以下内容的 javascript 部分初始化树:
$("#tree").dynatree({
title: "Title",
checkbox: true,
selectMode: 2,
onSelect: function() {
var tree = $("#tree").dynatree("getTree");
var selKeys = $.map(tree.getSelectedNodes(), function(node){
return node.data.key;
});
document.getElementById("<%= hiddenfieldname.ClientID %>").value = selKeys.join("|");
}
});
然后是一些 C# 代码:
var objectIds = hiddenfieldname.Value.Split("|");
关于c# - 在 ASP.NET(非 MVC)中使用带有复选框的 jQuery Dynatree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5265959/