如何在rowdatabound事件的网格视图中检查状态(True / False)?

时间:2011-02-17 06:28:33

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

我有一个包含三列的表(ProdID,ProdName,Status)。我将其提取到dataSet并将其绑定到我的gridview。我有一个非常基本和简单的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;
            }
        }
    }

但是当我看到我的第3列(状态)时,它被转换为复选框,可能因为它只包含'True'或'False'。同样在我的if条件中:

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

文本值显示如下:

  

“”

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

3 个答案:

答案 0 :(得分:3)

你可以尝试......

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 :(得分:1)

检查您是否有 CheckBox 控件:

e.Rows.Cells[3].Controls

然后你可以获得 Checked 属性:

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

答案 2 :(得分:0)

如果状态列是一堆复选框,请测试复选框的Checked属性是true还是false