【问题标题】:Using jQuery Dynatree with checkboxes in ASP.NET (not MVC)在 ASP.NET(不是 MVC)中使用带有复选框的 jQuery Dynatree
【发布时间】:2011-07-13 01:33:19
【问题描述】:

现在我正在使用一个在我的页面中启用了复选框的 ASP.NET TreeView,并且我通过使用节点值来存储从 db 获得的 id 在后面的 C# 代码中动态填充树。在回发时,我遍历节点并获取已检查的节点并将其存储回数据库中。

为了获得三态复选框(在 ASP.NET TreeView 中不可能),我想移动到 jQuery Treeview。最有希望的似乎是 http://wwwendt.de/tech/dynatree/doc/samples.html 的 Dynatree(点击左侧的持久性。)

还有其他一些免费的带有复选框的 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 控件并在回发中读取它?

文档在这里http://wwwendt.de/tech/dynatree/doc/dynatree-doc.html

【问题讨论】:

  • 如果您找不到简单的方法,您是否至少尝试过一种艰难的方法?有很多方法可以做到这一点。从服务器的角度来看,它可以像读取查​​询字符串参数一样简单。
  • IMO,最简单的方法是使用 Ajax 对服务器端脚本进行 POST 并更新数据库。不能使用 Ajax 有什么特别的原因吗?

标签: c# jquery asp.net treeview checkbox


【解决方案1】:

一种方法是将隐藏字段设置为包含由所选字符分隔的所有所选 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("|");

【讨论】:

    【解决方案2】:

    为什么不创建一个 Json 字符串并将其放在隐藏变量中,将整个树传递回 .net。在 .net 中,您可以将其转换回 .net 对象。

    当然,这可能会给大树带来性能问题。

    【讨论】:

      猜你喜欢
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 2014-08-31
      • 1970-01-01
      相关资源
      最近更新 更多