【问题标题】:C# ASP.NET Checkbox selected single valueC# ASP.NET 复选框选中单个值
【发布时间】:2016-07-26 22:31:43
【问题描述】:

我正在尝试从我的复选框中获取选定的值(仅谈论单个结果/检查),我想在我的按钮上的事件 onClick 上获取该值,不仅是复选框,我还有两个下拉列表还取出选定的值,当我点击我的按钮时,我从下拉列表中获取值,我无法从复选框列表中获取值,我不知道为什么,因为我在页面加载源之前设置了 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 list checkbox checkboxlist


    【解决方案1】:

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

    【讨论】:

    • 我想这就是这个问题的答案,但是我回家后会尽快尝试,如果可以的话我会回复!并将其标记为答案:) 谢谢
    • 这就是答案!非常感谢@ConnorsFan! :)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      • 2016-03-16
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      相关资源
      最近更新 更多