C#ASP.NET Checkbox选择了单个值

时间:2016-07-26 22:31:44

标签: c# asp.net list checkbox checkboxlist

我试图从我的复选框中获取选定的值(仅讨论单个结果/检查),我想在我的按钮上的事件onClick上获得该值,而且不仅复选框我还有两个下拉列表我是也取出了选定的值,当我点击我的按钮时,我从下拉列表中获取值,我无法从checkboxlist中获取值,我不知道为什么因为我在页面加载源之前设置了allready并且eveything看起来很好但是我无法获得价值:/

以下是代码:

 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说它的值是“”所以就像我没有选择任何东西,即使我做了..:/

谢谢你们, 干杯

2 个答案:

答案 0 :(得分:0)

每个回发都会执行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();
    }
}

答案 1 :(得分:0)

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