如何根据asp.net中的数据库值禁用checkboxlist的一些复选框?

时间:2015-09-03 19:13:44

标签: asp.net sql-server

我有一个复选框列表,其中有26个值从数据库中填充。

<asp:CheckBoxList ID="chkList1" runat="server" RepeatColumns="3" RepeatDirection="Horizontal" Width="100%" DataTextField="Name" DataValueField="ID" AutoPostBack="True" Visible="false" OnSelectedIndexChanged="chkList1_SelectedIndexChanged">
</asp:CheckBoxList>

public QueSet()
    {
        SqlConnection conn = new SqlConnection(Settings.DatabaseConnectionString);

        try
        {
            conn.Open();
            SqlCommand com = new SqlCommand("sp_SelectQueSet",conn); 
            com.CommandType = CommandType.StoredProcedure;          
            SqlDataAdapter sa = new SqlDataAdapter(com);
            DataSet ds = new DataSet();
            sa.Fill(ds);
            if(ds.Tables.Count > 0)
            {this.Data = ds.Tables[0];}
        }
        catch(Exception ex)
        {
            throw new ApplicationException(ex.Message);
        }
        finally
        {conn.Close();}

    }

QueSet q = new QueSet();
chkList1.DataSource = q.Data;
chkList1.DataBind();

基于上面的代码,checkboxlist从数据库中获取数据。数据库中的一个值是&#34; Nothing&#34;身份证号码51。

如果用户选择&#34; Nothing&#34;我想禁用所有其他复选框。值。

protected void chkList1_SelectedIndexChanged(object sender, EventArgs e)
{
    //what should I do here?
}

2 个答案:

答案 0 :(得分:0)

首先将数据源设置为checkboxlist

然后尝试这个(未经测试,对不起)

for (int i = 0; i < chkList.Items.Count; i++)
{
    if (Chkboxlist.Items[i].Value == "SomeValue")
    {
        Chkboxlist.Items[i].Enabled = false; 
    }
}

答案 1 :(得分:0)

客户端脚本可以轻松实现这一点,不需要Server SelectedIndexChanged。执行以下步骤

  1. 从中删除AutoPostback =“true”和OnSelectedIndexChanged =“...” 你的CheckboxList控件和添加属性CssClass =“CHKList”

  2. 附上jQuery.js,比如jQuery-1.7或最新版本

  3. 在ASPX页面中添加以下代码。这将在单击任何复选框时禁用所有复选框,如果未选中则启用后退

       
    <script>
    
    
       $(document).ready(function () {
    
                $(".CHKList input:checkbox").click(function () {
    
                    if ($(this).prop("checked") == true) {
                        $(".CHKList input:checkbox").prop("disabled", true);//older version of jQuery prop will not work , use attr("disabled","disabled");
                        $(this).prop("disabled", false);
                    }
                    else {
                        $(".CHKList input:checkbox").prop("disabled", false);
                    }
                });
            });
    </script>