问候大师。如果'Status'字段为null,我有一个gridview,我需要高亮显示行。下面的代码抛出异常。我得到一个“不可调用的成员'System.Web.UI.WebControls.GridViewRow.DataItem'不能像方法一样使用”。我想我真的很接近,但我不知道下一步该转向何方。
protected void GridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow &&
e.Row.DataItem("Status") == null)
{
// e.Row.BackColor = Drawing.Color.Red;
}
}
答案 0 :(得分:1)
基本
CType(e.Row.DataItem, DataRowView)("Status") = null
C#
((DataRowView)e.Row.DataItem)["Status"] == null
或在多行中执行 - 请参阅此处的示例: msdn example
答案 1 :(得分:0)
我很久没有看过这个了,但你是否像数组一样访问DataItem?
e.Row.DataItem(“Status”)将是e.Row.DataItem [“Status”]
//检索基础数据项。在这个例子中 //基础数据项是DataRowView对象。 DataRowView rowView =(DataRowView)e.Row.DataItem;
//检索当前行的状态值。 String state = rowView [“state”]。ToString();
答案 2 :(得分:0)
尝试施放:
if (((MyType)e.Row.DataItem).Status == null) { ... }
答案 3 :(得分:0)
关键点是:
将您的DataRow转换为DataRowView, 像这样:
DataRowView rowView = (DataRowView)e.Row.DataItem;
然后您可以检索类似的值 这样:
// Retrieve the status value for the current row.
Status status = (Status)rowView["status"];
...或投射到状态恰好是什么类型。
答案 4 :(得分:0)
知道了。它可能不是最好的解决方案,但它有效。
if (e.Row.RowType == DataControlRowType.DataRow )
{
DataRowView test = (System.Data.DataRowView)e.Row.DataItem;
string Active = test.Row[4].ToString();
if(Active == "")
{
e.Row.BackColor = System.Drawing.Color.Sienna;
e.Row.ForeColor = System.Drawing.Color.Yellow;
}
}