DataGrid如果使用分頁,最後一頁可能不能“滿頁”,這樣DataGrid的排版可能會出現問題,剩下的行每行太寬,整個DataGrid變得難看。
解決方法大概可以從三個地方考慮:
1.在DataSource中填上新資料行。
2、在DataGrid中填入新空白控制行。
3.在webpage中用javascript填上新的html控件行。
我採用的是第二種方法,在datagrid的prerender事件的回應方法中,在footer行之上填入空白行,程式碼如下:
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 grid = (sender as DataGrid);
if(grid.Controls.Count == 0) return;
System.Web.UI.WebControls.Table table = (grid.Controls[0] as 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 = new DataGridItem(0,0,ListItemType.Item);
for(int i=0;i<tablerow.Controls.Count;i++)
{
tablecell = new System.Web.UI.WebControls.TableCell();
dgi.Cells.Add(tablecell);
}
table.Controls.AddAt(table.Controls.Count-2,dgi);
}
}
說明:這裡考慮的是一個有header/footer/pager行,pager在下的,綁定的datagrid。
比較奇怪的是,無法在這裡給一行加上cssstyle,一旦我dgi.cssstyle="dumpTableRowClass";這些新加入的行就塌縮了,有成功的朋友請指點一下,謝謝。
athossmth原創,轉載請註明。