C# 如何在rowdatabound事件的网格视图中检查状态(真/假)?
我有一个包含三列(ProdID、ProdName、Status)的表。我将其提取到数据集中,并将其绑定到我的gridview。我有一个非常基本和简单的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) {
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,但在比较之前,checkFindControl
返回null或not。我在帖子中提到,我没有任何复选框控件。因为在我的数据库中,列字段类型是bit,“状态”列在我的gridview中自动以复选框的格式显示。@Akhtar:您是否编写了DataRowBound事件处理程序的代码?我已经编辑了答案,请看一看。”。试试看。