用PreRender處理DataGrid分頁最后一頁行數(shù)不滿的排版問題
發(fā)表時(shí)間:2024-06-03 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]DataGrid如果使用分頁,最后一頁可能不能“滿頁”,這樣DataGrid的排版可能會(huì)出現(xiàn)問題,剩下的行每行太寬,整個(gè)DataGrid變得難看。解決方法大概可以從三個(gè)地方考慮:1、在DataSource中填上新數(shù)據(jù)行。2、在DataGrid中填上新空白控件行。3、在webpage中用javasc...
DataGrid如果使用分頁,最后一頁可能不能“滿頁”,這樣DataGrid的排版可能會(huì)出現(xiàn)問題,剩下的行每行太寬,整個(gè)DataGrid變得難看。
解決方法大概可以從三個(gè)地方考慮:
1、在DataSource中填上新數(shù)據(jù)行。
2、在DataGrid中填上新空白控件行。
3、在webpage中用javascript填上新的html控件行。
我采用的是第二種方法,在datagrid的prerender事件的響應(yīng)方法中,在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);
}
}
說明:這里考慮的是一個(gè)有header/footer/pager行,pager在下的,綁定的datagrid。
比較奇怪的是,無法在這里給一行加上cssstyle,一旦我dgi.cssstyle="dumpTableRowClass";這些新加入的行就塌縮了,有成功的朋友請(qǐng)指點(diǎn)一下,謝謝。
athossmth原創(chuàng),轉(zhuǎn)載請(qǐng)注明。