用PreRender解決DataGrid分頁最后一頁行數不滿的排版問題

4/27/2005來源:ASP技巧人氣:19076

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原創,轉載請注明。



河北快3走势图彩