C#,ASP.NET:基于内容格式化GRIDVIEW行

时间:2009-11-23 17:52:15

标签: asp.net

问候大师。如果'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;
    }
}

5 个答案:

答案 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”]

Look here

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

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

答案 2 :(得分:0)

尝试施放:

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

答案 3 :(得分: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"];

...或投射到状态恰好是什么类型。

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