Pregunta

¿Cuál es la mejor manera para acceder a las propiedades extendidas de una Datacolumn en RowDatabound y aplicar una determinada clase y punta de herramienta si existe la clave de error?

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

            break;
    }
}

Esto es lo que obtuve antes de atascarme. Noté que mi elenco de Datarow no tenía una referencia a la DataColumn.

¿Fue útil?

Solución

Lo siguiente es lo que se me ocurrió, pero lamentablemente, está bien acoplado a solo un datos. ¿Hay alguna manera de hacer esto para su uso en múltiples datos de datos? Realmente no quiero aceptar mi propia respuesta de mierda.

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

Otros consejos

Bueno, podría extraer un método para hacer esto por usted y llamarlo desde todos sus eventos de red RowDatabound. Podrías poner esto en una clase de utilidades de cuadrícula.

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;
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top