GridView - использование CSS-дружественных адаптеров управления удаляет EmptyDataTemplate и EmptyDataText - PullRequest
5 голосов
/ 04 октября 2010

Как указано в вопросе:

Одним из решений является отключение надстройки для компонентов GridView, как указано в этот ответ

Существует ли решение, которое позволило бы сохранить использование CSS-дружественных адаптеров управления для GridView и при этом по-прежнему использовать функциональность EmptyDataTemplate?

Ответы [ 3 ]

5 голосов
/ 29 апреля 2011

Сборка cssfriendly из исходного кода вместо использования ссылки на скачивание.В настоящее время последний http://cssfriendly.codeplex.com/SourceControl/changeset/changes/24242, и EmptyDataText работает нормально для меня, когда я использую этот источник.

3 голосов
/ 05 октября 2010

Если вы посмотрите на источник адаптера CSS-Friendly для GridView, который указан в вашей ссылке, вы увидите следующее (обратите внимание на отсутствующий else ):

private void WriteRows(HtmlTextWriter writer, GridView gridView, GridViewRowCollection rows, string tableSection)
{
    if (rows.Count > 0)
    {

В основном адаптер не упоминает EmptyDataTemplate или EmptyDataText - это просто упущение. Исправить это просто, хотя. Все, что вам нужно сделать, это взять предоставленный источник, посмотреть, как его отображает исходный GridView, объединить концепции и перестроить оригинальный адаптер:

case DataControlRowType.EmptyDataRow:
                if (this._emptyDataTemplate == null)
                {
                    container = new TableCell();
                    string emptyDataText = this.EmptyDataText;
                    if (emptyDataText.Length > 0)
                    {
                        container.Text = emptyDataText;
                    }
                    break;
                }
                container = new TableCell();
                template = this._emptyDataTemplate;
                break;
        }
        if (container != null)
        {
            if (columnSpan > 1)
            {
                container.ColumnSpan = columnSpan;
            }
            if (template != null)
            {
                template.InstantiateIn(container);
            }
            row.Cells.Add(container);
        }
1 голос
/ 21 октября 2010

Добавьте следующее к RenderContents в GridViewAdapter.cs прямо перед разделом ///// BODY //// /////////////// EmptyDataTemplate ///////////////////////

if (gridView.Rows.Count == 0) {
    //Control[0].Control[0] s/b the EmptyDataTemplate.
    if (gridView.HasControls()) {
        if (gridView.Controls[0].HasControls()) {
            if (gridView.Controls[0].Controls[0] is GridViewRow) {
                rows.Clear();
                rows.Add(gridView.Controls[0].Controls[0]);
                gvrc = new GridViewRowCollection(rows);
                WriteRows(writer, gridView, gvrc, "tfoot");
            }
        }
    }
}   

И добавьте следующее в GetRowClass прямо перед возвратом className.Trim ();

//// EmptyDataTemplate 
if ((row.RowType & DataControlRowType.EmptyDataRow) == DataControlRowType.EmptyDataRow) {
className += " AspNet-GridView-Empty ";
}

Наконец,если вы хотите переопределить стандартный стиль tfoot, добавьте секцию CSS

.AspNet-GridView table tfoot tr.AspNet-GridView-Empty td
{

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...