【问题标题】:asp.net checkbox and nested repeatersasp.net 复选框和嵌套中继器
【发布时间】:2011-06-14 10:10:18
【问题描述】:

我在每一行都有嵌套的中继器和复选框(如树视图或类别和项目视图)。 每个选中/取消选中类别都应选中/取消选中项目。 有什么建议么? 谢谢,

【问题讨论】:

  • 有一些示例代码可以帮忙吗?
  • 我认为最好在 JS 中完成 - f.ex。 jQuery。然后在每个复选框更改 - 你可以对它的孩子做同样的事情..
  • 从这个帖子stackoverflow.com/questions/1220715/…得到一个想法

标签: asp.net checkbox nested


【解决方案1】:

我以前必须这样做,我已经用一个简单的 JavaScript 完成了。基本上,当您绑定中继器时,将 CategoryId 提供给复选框的检查事件,例如

onchange="SelectCategory('<%# Eval("CategoryID") %>')"

将您的子项目包裹在 ID 以 CategoryId 结尾的 div 中,例如

<div ID="divItems'<%# Eval("CategoryID") %>'">...</div>

这将允许您通过执行在 SelectCategory(catId) 函数中找到它

itemsDiv = document.GetElementById("divItems" + catId);

遍历它的子元素并检查你的项目:

var items = itemsDiv.getElementsByTagName('INPUT');
for (var i=0; i < items.length; i++) {
        if (collection[i].type.toUpperCase() == 'CHECKBOX')
            collection[i].checked = true; // or even "= CategoryCheckbox.checked"
    }

使用 jQuery 会更好:

$('#divItems' + catId).find(':checkbox').attr('checked', 'checked');

【讨论】:

  • 它应该可以与 asp:CheckBox 控件(服务器端控件)一起正常工作。唯一需要注意的是,这些控件的客户端 ID 可能与您的预期不同。查看源代码以了解我的意思。
  • 10x 的帮助,我不得不稍微改变一下,但效果很好!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
相关资源
最近更新 更多