2009-11-23 23 views
1

问候专家。如果'状态'字段为空,我有一个GridView,它是我需要关注的行。下面的代码会引发异常。我得到一个“不可调用的成员”System.Web.UI.WebControls.GridViewRow.DataItem'不能像方法一样使用“。我认为我非常接近,但我不知道下一步该转向哪里。C#,ASP.NET:根据内容格式化GRIDVIEW行

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

我很久没看过这个,但是你是否像数组一样访问DataItem?

e.Row.DataItem( “状态”)。将e.Row.DataItem [ “状态”]

Look here

//检索底层数据项。在这个例子中 //底层数据项是一个DataRowView对象。 DataRowView rowView =(DataRowView)e.Row.DataItem;

//检索当前行的状态值。 String state = rowView [“state”]。ToString();

0

尝试铸造:

if (((MyType)e.Row.DataItem).Status == null) { ... } 
0

看一看的sample code at MSDN

的关键点是:

  • 投下你的DataRow一个DataRowView的, 这样的:

    DataRowView rowView = (DataRowView)e.Row.DataItem;

  • 然后你可以检索像 此值:

    // Retrieve the status value for the current row.
    Status status = (Status)rowView["status"];

......或投射到任何类型状态恰好是。

1

基本

CType(e.Row.DataItem, DataRowView)("Status") = null 

C#

((DataRowView)e.Row.DataItem)["Status"] == null 

或做在多行 - 看这里的例子: msdn example

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; 
     } 
    }