DataColumn.ExtendedProperties Данные для GridView - PullRequest
1 голос
/ 02 ноября 2010

Каков наилучший способ доступа к расширенным свойствам DataColumn в rowDataBound и применения определенного класса и всплывающей подсказки, если существует ключ ошибки?

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.

Ответы [ 2 ]

0 голосов
/ 02 декабря 2010

Хорошо, вы можете извлечь метод, который сделает это за вас, и вызвать его из всех событий вашей сетки 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;
    }
}
0 голосов
/ 04 ноября 2010

Вот то, что я придумал, но, к сожалению, он тесно связан только с одним DataTable. Есть ли способ сделать это для использования в нескольких DataTables? Я действительно не хочу принимать мой собственный дерьмовый ответ.

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