Если DataGrid использует разбивку по страницам, последняя страница может быть не «полной», поэтому могут возникнуть проблемы с макетом DataGrid. Остальные строки будут слишком широкими, и весь DataGrid станет некрасивым.
Решения, вероятно, можно рассматривать с трех позиций:
1. Заполните новые строки данных в источнике данных.
2. Заполните новую пустую строку элемента управления в DataGrid.
3. Используйте JavaScript, чтобы заполнить новую строку элемента управления HTML на веб-странице.
Я использовал второй метод. В методе ответа на событие предварительной визуализации datagrid заполните пустую строку над строкой нижнего колонтитула. Код выглядит следующим образом:
protected virtual void SpiderSurfGrid_PreRender(object sender, System.EventArgs e).
{
DataGridItem dgi;
System.Web.UI.WebControls.TableCell tablecell;
System.Web.UI.WebControls.TableRow tablerow;
Сетка DataGrid = (отправитель как DataGrid);
если (grid.Controls.Count == 0) return;
Таблица System.Web.UI.WebControls.Table = (grid.Controls[0] как System.Web.UI.WebControls.Table);
tablerow = (System.Web.UI.WebControls.TableRow)(table.Controls[1]);
for(int j=this.PageSize+4-table.Controls.Count;j>0;j--)
{
dgi = новый DataGridItem(0,0,ListItemType.Item);
for(int i=0;i<tablerow.Controls.Count;i++)
{
tablecell = новый System.Web.UI.WebControls.TableCell();
dgi.Cells.Add(tablecell);
}
table.Controls.AddAt(table.Controls.Count-2,dgi);
}
}
Объяснение: Здесь рассматривается связанная сетка данных со строками верхнего/нижнего колонтитула/пейджера и пейджером ниже.
Странно то, что я не могу добавить сюда cssstyle. Как только я dgi.cssstyle="dumpTableRowClass"; эти вновь добавленные строки свернутся. Если у вас все получится, дайте мне несколько советов. Спасибо.
Оригинал athossmth, при перепечатке указывайте.