2010-04-06 66 views
0

我在新項目中使用ASP.NET3.5 gridview控件。我的問題是gridview呈現基本表格格式的數據,而我想要一個具有行標題/分組行爲的網格。這方面的一個例子就是Outlook Web界面,該界面可以按日期對電子郵件進行分組,並允許您選擇要顯示的單個電子郵件。帶有行標題的Gridview

我的問題:我不明白這是如何輕鬆完成與Gridview?我確實發現了一款​​叫做Telerik的產品,它有一個看起來很花哨的Gridview,但我不願意花錢購買一個單獨的組件,現在它也將我鎖定到第三方框架中......

+0

所以我會更好使用下面的選項,而不是利用像Telerik的一些框架? – 2010-04-07 04:04:57

回答

0

Asp.Net GridView控件是Asp.Net服務器控件中的數據控件系列。它最適合用於表格數據的顯示。類似行的分組等效果默認情況下不受支持。與您所提到的一樣,市場上有第三方供應商提供這些控件額外的功能。

大多數情況下,使用asp.net服務器控件提供開箱即用功能需要通過繼承原始控件來創建自定義控件。如果你需要對gridview的所有列進行排序,並且你需要突出顯示當前選中的列,那麼通過創建你自己的控件來完成它的最好的工作,這個控件是從Asp.Net GridView控件繼承而來的。網上有資源解釋瞭如何實現做完了。

1

我記得有這樣一個問題所困擾之前,我可以用缺乏幫助那裏的話題同情,所以如果你想要一個gridview,這是你如何能做到這一點:

的OnRowDataBound事件添加到你的GridView:

OnRowDataBound="grv_RowDataBound" 

添加像這樣到後面的代碼:

private DateTime currentDate; 
private int extraCount; 

protected void grv_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     //assuming the cell with index 5 is the cell with the Date in it 
     if (currentDate != DateTime.Parse(e.Row.Cells[5].Text)) 
     { 
      //making a header row (so it looks different to the other rows) 
      var row = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert); 
      var headerCell = new TableHeaderCell(); 
      headerCell.ColumnSpan = 3; //however many columns you have in your gridview 
      headerCell.Text = e.Row.Cells[5].Text; 
      row.Cells.Add(headerCell); 
      currentDate = DateTime.Parse(e.Row.Cells[5].Text); 
      extraCount++; 
      grvMortgages.Controls[0].Controls.AddAt(e.Row.RowIndex + extraCount, row); 
     } 
    } 
}