【问题标题】:asp Checkbox codebehind validationasp复选框代码隐藏验证
【发布时间】:2014-06-26 03:12:23
【问题描述】:

我的 aspx 页面上有一个从字符串列表加载的复选框(基于其他一些变量), 我只希望用户能够选择恒定数量的这些框;当前常数是 6。在我后面的代码中,我一直在尝试验证这一点;如果'selectedCount'等于我在另一个类中找到的常量,我会做一些事情。问题是它无法识别支票。

int selectedCount = 0;
        for (int i = 0; i < checkbox.Items.Count; i++)
        {

            if (checkbox.Items[i].Selected == true)
            {
                selectedCount++;
            }
        }

我的问题是它会遍历列表中的每个项目,但即使在选定的项目上它也会返回 false。在这种情况下,如何正确检查我选择/未选择的布尔值?因为这显然不能解决问题。

【问题讨论】:

  • 你能发布你的 CheckBox 的 ASPX 吗?
  • 复选框是复选框列表吗?
  • 你能把代码贴在你做数据绑定的地方吗?请注意,如果您在未检查 IsPostback 的情况下对 OnLoad 进行数据绑定,则控件将在每次回发时重新绑定,并且在上述代码运行时,您将失去其预期状态。
  • 你能显示你的 Page_Load 吗?
  • 太棒了。这是 PostBack,我将数据绑定放在 if(!IsPostback) 旁边,它现在可以工作了。狡猾的家伙。谢谢

标签: c# asp.net checkbox


【解决方案1】:

我能想到的一件事是你在回发中再次绑定 CheckBoxList。

为了防止它,你想使用 IsPostBack

<asp:CheckBoxList runat="server" ID="CheckBoxList1" />
<asp:Button runat="server" ID="Button1" Text="Submit" OnClick="Button1_Click" />

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        CheckBoxList1.Items.Add(new ListItem("One", "1"));
        CheckBoxList1.Items.Add(new ListItem("Two", "2"));
        CheckBoxList1.Items.Add(new ListItem("Three", "3"));
        CheckBoxList1.Items.Add(new ListItem("Four", "4"));
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    int selectedCount = 0;
    var selectedText = new List<string>();
    foreach (ListItem item in CheckBoxList1.Items)
    {
        if (item.Selected)
        {
            selectedCount++;
            selectedText.Add(item.Text);
        }
    }
}

【讨论】:

  • 非常感谢。这有帮助。我没有在页面加载时发现它正在自行重置。我把它扔进了一个 !Postback if 并且效果很好。谢谢。
猜你喜欢
  • 2015-12-03
  • 2017-11-23
  • 2012-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 1970-01-01
  • 2013-08-10
相关资源
最近更新 更多