2010-02-24 49 views
2

我的C#web應用程序要求用戶輸入汽車信息。用戶可以添加一個自動或更多(最多20個)的信息。我有一個按鈕,允許用戶「添加更多汽車」 這個想法是允許用戶添加多於一個車。在C#2008上動態添加文本字段asp.net頁面

當用戶點擊「添加更多汽車」時,如何動態顯示文本框,並跟蹤用戶添加了多少輛汽車(將其加載到陣列並寫入數據庫)

任何其他想法會使這個目標更容易?該控件僅用於輸入數據,而不用於查看任何記錄。

回答

1

我喜歡使用佔位符並添加用戶控件。它工作得非常好,而且非常模塊化。下面是一個簡單的例子,我添加了一些基於列表的控件。您會注意到我將一個對象傳遞給我的用戶控件,允許它隱藏或顯示自己,根據權限顯示某些選項等。你可以很容易地修改這段代碼添加一個事件:

for (int i = 0; i < comments.Count; i++) 
      { 
       controls.Comment commentCtrl = (controls.Comment)Page.LoadControl("~/userControls/Comment.ascx"); 
       commentCtrl.ID = "commentUserCtrl" + i; 
       commentCtrl.setComment((myCommentObj)comments[i]); 

       placeHolderComments.Controls.Add(commentCtrl); 
      } 
0

使用ListView顯示輸入的汽車列表。創建一個InsertItem模板,該模板包含用於插入新車的模板,並在插入時通過重新載入記錄更新數據庫,允許它們插入。你可以用UpdatePanel來封裝它,使其成爲異步。

OR

如果你想要一個純客戶端的方式,使用JavaScript來創建可編程每個條目,然後使用一個共同的方案來創建控件。然後,您可以檢查表單集合以獲取發佈的值並提取所有值,或者通過客戶端的Web服務將數據流式傳輸回teh服務器。

HTH。

+0

我猜Repeater控件不適用於數據輸入,正確嗎? ListView聽起來像一個更好的主意。謝謝 – user279521

+0

Nah,一箇中繼器是一個列表框的較輕版本,更老,更簡單。你可以用它來顯示更多的文本框,雖然它可能不是最好的方法。像這樣嘗試:將它們添加到一個div(服務器端),然後將這個div添加到佔位符中,以便將事物放在正確的位置。 –

+0

ListView真的很好用,JavaScript/JQuery友好,併爲您處理綁定,這就是我喜歡它的原因。中繼器是一個有效的選項...我傾向於使用Repeater上的ListView,但這並不是說Repeater無效。 –

1

,你可以做到以下幾點:

  1. 添加一個佔位符,或將保存在文本框中的任何其他容器控件。
  2. 在設計時將一個文本框放在該容器中。
  3. 每次用戶點擊「添加更多汽車」時,添加運行時動態添加文本框。
  4. 當用戶發佈表單時,將檢索將作爲文本框並通過它們循環的容器控件的子元素。

此外,您還可以對文本框進行用戶控件(ASCX文件)以獲得更多控制權,例如處理事件或爲每個文本框添加驗證程序。然後,每次向容器添加一個新控件時,您都必須使用LoadControl(「YourTextBox.ascx」)加載用戶控件。