我试图从我的复选框中获取选定的值(仅讨论单个结果/检查),我想在我的按钮上的事件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说它的值是“”所以就像我没有选择任何东西,即使我做了..:/
谢谢你们, 干杯
答案 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是否为复选框值并将其转换。