C#ASP.NET复选框选择了单个值

本文关键字:单个值 选择 复选框 NET C#ASP | 更新日期: 2023-09-27 17:58:40

我正试图从我的复选框中获取选定的值(只谈论单个结果/复选框),我想在事件上获取该值点击我的按钮,不仅是复选框,我还获得了两个下拉列表,我也从中提取了选定的值,当我点击按钮时,我从下拉列表中获得值,但我无法从复选框列表中获取值,我不知道为什么,因为我在页面加载源之前设置了allready,一切看起来都很好,但我不能获取值:/

这是代码:

 protected void btnSearch_Click(object sender, EventArgs e)
    {
       var dropDown_one= Convert.ToInt32(dropOne.SelectedValue); //THIS IS OK
       var dropDown_two = Convert.ToInt32(dropTwo.SelectedValue);//THIS IS OK
       var checkBox = Convert.ToInt32(checkBox.SelectedValue); //<- here I got error, because I am trying to convert "" value to int
    }

在页面加载时,我发现:

checkBox.DataSource =SomethingFromDatabase();
        checkBox.DataTextField = "Name";
        checkBox.DataValueField = "ID";
        checkBox.DataBind();

所以我从数据库中得到了值,我可以检查它们,但当我点击按钮时,我出现了错误,因为checkboxlist显示它的值是",所以即使我选择了,我也没有选择任何东西。:/

谢谢各位,干杯

C#ASP.NET复选框选择了单个值

Page_Load事件处理程序在每次回发时执行。如果您每次调用数据绑定代码,则CheckBoxList将被清除并重新填充,您所做的选择也将丢失。

这个问题的解决方案是将数据绑定到if (!IsPostBack)条件块中:

void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        checkBox.DataSource = SomethingFromDatabase();
        checkBox.DataTextField = "Name";
        checkBox.DataValueField = "ID";
        checkBox.DataBind();
    }
}

检查复选框是否未处于禁用状态,因为它将在禁用状态下返回NULL,并将其转换为Int将引发错误。因此,选中复选框值为NULL并进行转换。