我有一个复选框列表,其中有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?
}
答案 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。执行以下步骤
从中删除AutoPostback =“true”和OnSelectedIndexChanged =“...” 你的CheckboxList控件和添加属性CssClass =“CHKList”
附上jQuery.js,比如jQuery-1.7或最新版本
在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>