C# 如何在rowdatabound事件的网格视图中检查状态(真/假)?

C# 如何在rowdatabound事件的网格视图中检查状态(真/假)?,c#,.net,asp.net,visual-studio,gridview,C#,.net,Asp.net,Visual Studio,Gridview,我有一个包含三列(ProdID、ProdName、Status)的表。我将其提取到数据集中,并将其绑定到我的gridview。我有一个非常基本和简单的rowdatabound事件,如下所示: protected void gvProducts_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) {

我有一个包含三列(ProdID、ProdName、Status)的表。我将其提取到数据集中,并将其绑定到我的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。

如果status列是一组复选框,那么测试复选框的
Checked
属性是
True
还是
False

您可以像这样尝试

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)

检查您在以下位置是否有复选框控件:

e.Rows.Cells[3].Controls
然后您可以检查其属性:

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

+1,但在比较之前,check
FindControl
返回null或not。我在帖子中提到,我没有任何复选框控件。因为在我的数据库中,列字段类型是bit,“状态”列在我的gridview中自动以复选框的格式显示。@Akhtar:您是否编写了DataRowBound事件处理程序的代码?我已经编辑了答案,请看一看。”。试试看。