我有一个包含三列的表(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进行比较。
答案 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
。