如问题所述:
EmptyDataTemplate and EmptyDataText not working in GridView
使用CSS-Friendly Control Adapters删除将由EmptyDataTemplate填充或在GridView中的EmptyDataText中指定的数据。
其中一个解决方案是禁用this answer
中指定的GridView组件的addapter是否有解决方案,允许继续使用CSS-Friendly Control Adapters进行GridView并仍然利用EmptyDataTemplate功能?
答案 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
{
}