2010-11-02 40 views
1

對於我來說,訪問rowDataBound上的DataColumn的擴展屬性並應用某個類和工具提示(如果存在錯誤鍵)的最佳方式是什麼?DataColumn.ExtendedProperties數據到GridView

protected void gridView_rowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    switch (e.Row.RowType) 
    { 
     case DataControlRowType.Header: 
      ((DataRow)e.Row.DataItem)... 
      break; 
     case DataControlRowType.DataRow: 

      break; 
    } 
} 

這就是我被卡住之前所得到的。我注意到我的DataRow轉換沒有對DataColumn的引用。

回答

0

以下是我想到的,但令人遺憾的是,它僅與一個DataTable緊密耦合。有沒有辦法做到這一點在多個DataTable中使用?我真的不想接受我自己糟糕的答案。

protected void gridView_rowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    switch (e.Row.RowType) 
    { 
     case DataControlRowType.Header: 
      foreach (DataColumn col in myDataTable.Columns) 
      { 
       if (col.ExtendedProperties["error"] != null) 
       { 
        e.Row.Cells[col.Ordinal].CssClass = "error-cell"; 
        e.Row.Cells[col.Ordinal].ToolTip = col.ExtendedProperties["error"].ToString(); 
       } 
      }     
      break; 
     case DataControlRowType.DataRow: 

      break; 
    } 
} 
0

那麼,你可以提取出一個方法來爲你做這件事,並從你的所有網格RowDataBound事件中調用它。你可以把它放在一個網格工具類中。

public void ShowExtendedProperties(GridViewRow row, DataTable table) 
{ 
switch (row.RowType) 
    { 
     case DataControlRowType.Header: 
      foreach (DataColumn col in table.Columns) 
      { 
       if (col.ExtendedProperties["error"] != null) 
       { 
        row.Cells[col.Ordinal].CssClass = "error-cell"; 
        row.Cells[col.Ordinal].ToolTip = col.ExtendedProperties["error"].ToString(); 
       } 
      }     
      break; 
     case DataControlRowType.DataRow: 
      //I assume you have logic here, or other case statements? 
      break; 
    } 
}