【问题标题】:Get value of CheckBox in GridView, Bit Datatype, asp.net获取GridView、Bit Datatype、asp.net中CheckBox的值
【发布时间】:2013-05-03 00:43:28
【问题描述】:
  1. 我是初学者,问题或语法可能很愚蠢。
  2. 我绘制了一个基于 SqlDataSource 查询的网格视图。
  3. 将状态字段转换为位。
  4. 会自动创建一个复选框。

现在我如何获取 SelectedIndexChanged 上复选框的值。

        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        Panel_Entry.Visible = true;
        int i = GridView1.SelectedIndex;
        String vDescr = GridView1.Rows[i].Cells[2].Text;
        CheckBox chk = (CheckBox)GridView1.Rows[i].FindControl("BitStatus");
        Response.Write(chk.ToString()+vDescr);}

System.NullReferenceException:对象引用未设置为对象的实例。

显示错误。 请在这方面提供帮助。

【问题讨论】:

  • 你在哪一行得到错误?
  • 第 68 行:Response.Write(chk.ToString()+vDescr);第 69 行:第 70 行:
  • 当您到达这些行之一时就会引发错误,它会在哪一行引发? 66还是67还是……?我认为应该在第 67 行提出?
  • 是的,我认为这是因为......一旦我们想尝试打印值或应用一些 if 条件,它就会出错

标签: gridview types checkbox bit


【解决方案1】:

当您动态添加控件时,您应该再次加载该控件,并且它不会在控件树中列出。要找到它,您可以使用循环来查找它,就像在这篇文章中所说的那样 Better way to find control in ASP.NET

也看看这个帖子:好像有用ASP.Net FindControl is not working - How come?

【讨论】:

    【解决方案2】:

    谢谢大家...我找到了解决办法。

    CheckBox chk = (CheckBox)GridView1.Rows[i].Cells[3].Controls[0]; if (chk.Checked) { Response.Write("yes"); } else { Response.Write("no"); } 它工作正常。 如果我们使用一些 asp:template itemtemplate 等,findcontrol() 可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      相关资源
      最近更新 更多