【问题标题】:Access(checkall, uncheck, middlestate) to dynamic checkbox in asp table via javascript通过javascript访问(checkall,uncheck,middlestate)到asp表中的动态复选框
【发布时间】:2018-05-31 14:13:53
【问题描述】:

我正在尝试编写特权组复选框。就像是 this

到目前为止,我制作了一个页面,其中放置了我制作的空控件,看起来像这样

<fieldset>
  <legend><asp:CheckBox ID="GroupName" runat="server" TextAlign="Left" text="test" onclick="checkAll()"/></legend>
<span> <!--class="filterTableSpan"-->
<asp:Table ID="priviligeTable" runat="server" CssClass="groupTable">


</asp:Table>
</span>
</fieldset>

然后我填写 priviligeTable

CheckBox privilCheck = new CheckBox();
privilCheck.ID = this.ID + "_" + privName; //ID of group

TableCell tc = new TableCell();
tc.ID = this.ID + "_tc" + privName;
tc.Controls.Add(privilCheck);
TableRow tr = new TableRow();
tr.ID = this.ID + "_tr" + privName;
tr.Cells.Add(tc);
this.priviligeTable.Rows.Add(tr);

现在我想为 Privilige Group Name 复选框制作全选、取消选择和中间状态的 javascript,但我不知道如何访问动态生成的复选框。此外,我是 javascript 的新手。如果有人能告诉我解决这个问题的方法,或者更确切地说是我应该努力解决这个问题的方向,我会很高兴。

【问题讨论】:

    标签: javascript jquery asp.net checkbox


    【解决方案1】:

    这些角色是否来自数据库中的列表?如果是这样,我的直觉是避免使用并使用。 Gridview 为您提供了更多内置功能,包括使您能够随时随地创建所有复选框的模板。

    不过,你正在做的事情也可以。

    我建议使用jQuery - 它会让您的生活更轻松,并确保您的代码在所有浏览器中都能正常运行。

    那么你需要这样的东西。这将打开或关闭所有复选框。

    function checkAll() {
        // Find all the checkboxes in the table
        var $checkboxes = $('table.groupTable input[type=checkbox]');
    
        if($(this).is(':checked')){
            // Check them
            $checkboxes.attr("checked","checked");
        } else {
            // Uncheck them
            $checkboxes.removeAttr("checked",);
        }
    }
    

    我认为应该这样做。不过,不确定您所说的“中间状态”是什么意思。它们要么被选中,要么被选中。

    不要忘记,在回发时,您需要重新创建所有复选框才能读取其内容。

    【讨论】:

    • 求解函数 check(GroupCheckbox) { var str = GroupCheckbox.id.replace("_PriviligeGroupCheckbox", ""); var CurrentTable = document.getElementById(str + "_priviligeTable");变量名称 = "#"+str + "_priviligeTable"; if (!GroupCheckbox.checked) $( name+' input[type=checkbox]').removeAttr('checked'); else $(name +' input[type=checkbox]').attr('checked', 'checked'); } 但如果没有您的帮助,这将是不可能的,非常感谢。
    • 不错的一个。很难阅读您的答案,但我认为它有效!请注意,如果您使用的是 jQuery,则可以将 document.getElementById('myCheckBox') 替换为 $('#myCheckBox'),这会使您的代码更具可读性。另外,我看到您正在尝试从已单击的 groupcheckbox 中找到一个表。更好的方法可能是将表的 ID 作为数据属性存储在复选框本身中,即&lt;input type="checkbox" ... data-tableid="cats_priviligeTable" &gt;。然后你可以做var currentTable = $('#'+$(this).data('tableid'))。等等。祝你好运。
    • 作为“中间状态”,我通过 asp.net 属性启用=false;但是点击禁用的复选框根本不起作用
    猜你喜欢
    • 2014-07-18
    • 2013-12-12
    • 1970-01-01
    • 2011-10-18
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多