明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

用PreRender處理DataGrid分頁(yè)最后一頁(yè)行數(shù)不滿的排版問(wèn)題

[摘要]DataGrid如果使用分頁(yè),最后一頁(yè)可能不能“滿頁(yè)”,這樣DataGrid的排版可能會(huì)出現(xiàn)問(wèn)題,剩下的行每行太寬,整個(gè)DataGrid變得難看。解決方法大概可以從三個(gè)地方考慮:1、在DataSource中填上新數(shù)據(jù)行。2、在DataGrid中填上新空白控件行。3、在webpage中用javasc...

DataGrid如果使用分頁(yè),最后一頁(yè)可能不能“滿頁(yè)”,這樣DataGrid的排版可能會(huì)出現(xiàn)問(wè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);
  }
}

說(shuō)明:這里考慮的是一個(gè)有header/footer/pager行,pager在下的,綁定的datagrid。

比較奇怪的是,無(wú)法在這里給一行加上cssstyle,一旦我dgi.cssstyle="dumpTableRowClass";這些新加入的行就塌縮了,有成功的朋友請(qǐng)指點(diǎn)一下,謝謝。

athossmth原創(chuàng),轉(zhuǎn)載請(qǐng)注明。