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显示它的值是",所以即使我选择了,我也没有选择任何东西。:/
谢谢各位,干杯
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并进行转换。