C# ASP.NET 复选框选中单个值

C# ASP.NET Checkbox selected single value

我正在尝试从我的复选框中获取 selected 值(仅谈论单个 result/check),我想在我的按钮上的 onClick 事件中获取该值,而不仅仅是复选框我还有两个下拉列表,我也从中获取 selected 值,当我单击我的按钮时,我从下拉列表中获取值,但我无法从复选框列表中获取值,我不知道为什么,因为我在页面加载源之前设置好一切,一切看起来都很好,但我无法获得价值:/

代码如下:

 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();

所以我从数据库中获得了值并且我能够检查它们,但是当我点击我的按钮时我得到了错误,因为复选框列表说它的值为“”所以我没有 select 任何东西,即使我做了.. :/

谢谢大家, 干杯

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();
    }
}

检查 Checkbox 是否不处于禁用状态,因为它将 return NULL 处于禁用状态并将其转换为 Int 将引发错误。所以勾选复选框值为NULL并进行转换。