2010-03-09 75 views
0

我需要在我的一個網頁上有一個網格,用於輸入預算信息。我打算使用gridview,但如果其他想法能更好地滿足我的需求,我願意接受其他想法。我需要以下功能在我的網格:關於gridviews的幾個問題

  1. 所有的細胞,一旦在編輯模式下在頁面加載
  2. 需要在底部的頁腳行 計算總計爲特定列

我在gridview中查找了這個功能,但沒有任何運氣。有關如何在gridview中完成上述兩項的任何鏈接或建議,我們將不勝感激。

注:我使用Visual Studio 2008

回答

0

頁腳中的總數可以通過在每個數據更改和表單加載上執行的JavaScript組合應用,並通過GridView的RowDataBound事件動態添加文本框或標籤到頁腳。例如,

// Create textboxes in footer to hold hours totals 
if (e.Row.RowType == DataControlRowType.Footer) 
{ 
    e.Row.CssClass = "wgv-ft"; 

    for (int i = 0; i < NumHoursTextBoxes; ++i) 
    { 
     var tb = new TextBox(); 
     tb.ID = String.Format("Hours{0}TotalTextBox", i); 
     tb.CssClass = "total"; 
     tb.Enabled = false; 
     e.Row.Cells[FirstHoursTextBoxIndex + i].Controls.Add(tb); 
    } 
} 

而不是使用內置在GridView的報價,你可能只想使用的ItemTemplate並始終顯示爲可編輯的文本框或其他控件編輯功能(EditItemTemplates)。我使用過這種技術。您仍然可以利用驗證器和核心ASP.NET控制集,但是您必須編寫相當多的JavaScript來管理總計的更新。

我希望這會有所幫助。祝你好運。

1

IMO你會好得多使用ListView編碼這個自己。您可以查看DataBound()和ItemDataBound()事件。 GridView控件不附帶內置的功能。

OTOH,馬特Dotson有blog post描述如何建立一個GridView在編輯模式中的所有行。

+0

好吧,所以如果我使用ListView方法,我只是有一個項目模板,由每個列的文本框組成?訪問這些文本框以將值保存回數據庫有多難? – 2010-03-09 19:57:24