2010-11-02 26 views
1

Quel est le meilleur moyen pour moi d'accéder aux propriétés étendues d'un DataColumn sur rowDataBound et d'appliquer une certaine classe et une info-bulle si la clé d'erreur existe?Données 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; 
    } 
} 

C'est ce que j'ai obtenu avant de me coincer. J'ai remarqué que ma distribution DataRow n'avait pas de référence à DataColumn.

Répondre

0

Ce qui suit est ce que j'ai trouvé, mais malheureusement, il est étroitement couplé à un seul DataTable. Y at-il un moyen de faire cela pour une utilisation dans plusieurs DataTables? Je ne veux vraiment pas accepter ma propre réponse merdique.

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

Eh bien, vous pourriez extraire une méthode pour le faire pour vous et appelez de tous vos événements réseau RowDataBound. Vous pourriez mettre cela dans une classe d'utilitaires de grille.

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