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.CSS;這些新加入的行就塌縮了,有成功的朋友請指點一下,謝謝。