GridView - 使用CSS友好控件适配器删除EmptyDataTemplate和EmptyDataText

时间:2010-10-04 15:54:10

标签: asp.net css gridview

如问题所述:

其中一个解决方案是禁用this answer

中指定的GridView组件的addapter

是否有解决方案,允许继续使用CSS-Friendly Control Adapters进行GridView并仍然利用EmptyDataTemplate功能?

3 个答案:

答案 0 :(得分:5)

从源代码构建cssfriendly而不是使用下载链接。 目前最新的是http://cssfriendly.codeplex.com/SourceControl/changeset/changes/24242 当我使用该源时,EmptyDataText对我来说很好。

答案 1 :(得分:3)

如果您查看链接中提供的GridView的CSS友好适配器的来源,您将看到以下内容(请注意缺少的其他):

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

答案 2 :(得分:1)

在///// BODY ////部分之前的GridViewAdapter.cs中将以下内容添加到RenderContents /////////////// 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");
            }
        }
    }
}   

在返回className.Trim();

之前,将以下内容添加到GetRowClass中
//// EmptyDataTemplate 
if ((row.RowType & DataControlRowType.EmptyDataRow) == DataControlRowType.EmptyDataRow) {
className += " AspNet-GridView-Empty ";
}

最后,如果要覆盖标准tfoot样式,请添加CSS部分

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

}