【问题标题】:How to check the status (True/False) in a grid view on rowdatabound event?如何在行数据绑定事件的网格视图中检查状态(真/假)?
【发布时间】:2011-02-17 06:28:32
【问题描述】:

我有一个包含三列(ProdID、ProdName、Status)的表。我将其提取到数据集中并将其绑定到我的网格视图。我有一个非常基本且简单的 rowdatabound 事件,如下所示:

 protected void gvProducts_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (e.Row.Cells[2].Text == "False")
            {
                e.Row.BackColor = System.Drawing.Color.PaleVioletRed;
            }
        }
    }

但是当我看到我的第三列(状态)时,它被转换为一个复选框,可能是因为它只包含“真”或“假”。同样在我的条件下:

if (e.Row.Cells[3].Text == "False")

文本值显示如下:

""

任何人都可以建议我,我如何在我的 if 条件下将我的状态与 True 或 False 进行比较。

【问题讨论】:

  • 我已经编辑了我的答案,现在看看。并尝试。

标签: c# .net asp.net visual-studio gridview


【解决方案1】:

你可以试试……

if (((CheckBox)e.Row.Cells[3]).Checked == false)

或者,如果你愿意,活动会更好..

 if(((CheckBox)e.Row.FindControl("YourCheckboxID")).Checked == false)

编辑:因为您使用的是 RowDataBound 事件,当时行中没有您要查找的内容。你需要这样做......

DataRow dr = ((DataRowView)e.Item.DataItem).Row;
if (Convert.ToBoolean(dr["Status"]) == false)

【讨论】:

  • +1,但在比较之前,检查FindControl是否返回null。
  • 我在帖子中已经提到m没有任何复选框控件。由于在我的数据库中,列字段类型是位,因此状态列在我的gridview中自动以复选框的格式显示。
  • @Akhtar:你为 DataRowBound 事件处理程序编写代码了吗?
【解决方案2】:

检查您是否有 CheckBox 控件:

e.Rows.Cells[3].Controls

那么就可以得到它的Checked属性:

((CheckBox)e.Rows.Cells[3].Controls[0]).Checked

【讨论】:

    【解决方案3】:

    如果Status列是一堆checkbox,那么测试checkbox的Checked属性是true还是false

    【讨论】:

      猜你喜欢
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多