【问题标题】:How do I disable/enable checkboxlist items based on selected selection?如何根据所选选择禁用/启用复选框列表项?
【发布时间】:2015-09-23 12:44:57
【问题描述】:

您好,我急需帮助,这篇文章可能看起来与上一篇文章相似,但代码的方法和要求完全不同。

我有一个复选框列表,其中 2 个复选框列表项是使用存储过程填充的。但是我在复选框列表中添加了一个“全选”列表项。

1.当使用javascript或C# onchanged事件或jquery检查“全选”时,如何禁用所有其他复选框列表项(但使用外部javascript文件而不是放入aspx文件本身)?强>

2。如果使用 javascript 或 C# onchanged 事件或 jquery(但使用外部 javascript 文件而不是放入 aspx 文件本身)检查复选框 1 中的特定列表项,我如何编写代码以禁用/启用某些复选框项?

例如,在 checkboxlist1 中,颜色、食物和饮料也填充了全选,在 checkboxlist2 中,填充了红色、蓝色、绿色、鸡肉、菠菜、可乐和果汁。

在第一个示例场景中,我检查了颜色和食物,因此我如何编写代码以仅在 checkboxlist2 中启用红色、蓝色、绿色、鸡肉和菠菜,或者在第二个示例场景中,我仅在 checkboxlist1 中检查了饮料,因此它应该只启用可乐和果汁应该禁用其余列表项。

3.如何将我的脚本放在 js.file 中,而不是作为脚本放在头文件中,而不会收到 $undefined 错误或未找到 form1 id 的运行时错误?

ASPX

    <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>

<html>
<head runat="server">
<Script>
    $(document).ready(function () {
    var checked = false;
    $('#<%=Checkboxlist1.ClientID%> input:checkbox').click(function () {
        var currentIdone = 'Select All';
        var currentId = $(this).next().html();
        if (currentId == currentIdone) {

            if (checked) {

                $("#<%=Checkboxlist1.ClientID%> input").removeAttr('disabled');
                checked = false;
                return;
            }
            else {
                $("#<%=Checkboxlist1.ClientID%> input").attr('checked', false);
                $(this).attr('checked', true);
                $('#<%=Checkboxlist1.ClientID%> input:not(:checked)').attr('disabled', 'disabled');
                checked = true;
            }


        }

        });
    });

$(document).ready(function () {
    var checked = false;
    $('#<%=Checkboxlist2.ClientID%> input:checkbox').click(function () {
        var currentIdone = 'Select All';
        var currentId = $(this).next().html();
        if (currentId == currentIdone) {

            if (checked) {

                $("#<%=Checkboxlist2.ClientID%> input").removeAttr('disabled');
                checked = false;
                return;
            }
            else {
                $("#<%=Checkboxlist2.ClientID%> input").attr('checked', false);
                $(this).attr('checked', true);
                $('#<%=Checkboxlist2.ClientID%> input:not(:checked)').attr('disabled', 'disabled');
                checked = true;
            }


        }

        });
    });
</script> 
</head>

<body>
 <form id="form1" runat="server">
     <asp:CheckBoxList ID="Checkboxlist1" runat="server" Height="80px" Width="500px" AppendDataBoundItems="True" ViewStateMode="Enabled">
                        <asp:ListItem Text="Select All" Value="Select All"></asp:ListItem>
                    </asp:CheckBoxList>
     <asp:CheckBoxList ID="Checkboxlist2" runat="server" Height="80px" Width="500px" AppendDataBoundItems="True" ViewStateMode="Enabled">
                        <asp:ListItem Text="Select All" Value="Select All"></asp:ListItem>
                    </asp:CheckBoxList>
    </form>    
</body>
    </html>
   

【问题讨论】:

  • 我们也很想帮助你,但你还没有发布你的努力:P
  • 您好,不知道为什么之前没有显示代码,但对其进行了编辑。请看一下:)
  • 您是否尝试将复选框本身作为参数传递给外部 javascript 方法?
  • @newtoasp 你的意思是在Checkboxlist1 中选择 selectall 时应该只禁用checkboxlist1 中的所有项目吧?
  • @john paul,是的,我确实将它链接到外部 java 脚本,但它返回错误

标签: javascript asp.net c#-4.0


【解决方案1】:

checkboxlist1_SelectedIndexChanged 我假设Sellect all 值为1 这是代码

 protected void checkboxlist1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string roles = "";
        try
        {
            roles = checkboxlist1.SelectedValue;



                foreach (ListItem li1 in this.checkboxlist1.Items)
                {
                    //checkboxlist1.Items.FindByText(li.ToString()).Selected = true;

                    if (li1.Value != "1" )
                    {
                           checkboxlist1.Items.FindByText(li1.ToString()).Enabled = false;
                    }
                    else
                    {
                        checkboxlist1.Items.FindByText(li1.ToString()).Enabled = true;
                    }
                }



            Boolean A = false;
            foreach (ListItem li in this.checkboxlist1.Items)
            {
                //checkboxlist1.Items.FindByText(li.ToString()).Selected = true;

                if (li.Selected)
                {
                    A = true;
                }
            }
            if (A == false)
            {
                foreach (ListItem li in this.checkboxlist1.Items)
                {
                    checkboxlist1.Items.FindByText(li.ToString()).Enabled = true;
                }
            }



        }
        catch (Exception ex)
        {
            ClientLogger.ClientErrorLogger(ex.Message);
        }
    }

【讨论】:

    猜你喜欢
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 2021-10-29
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    相关资源
    最近更新 更多