2010-06-14 45 views
1

所以我有一個頁面,我希望能夠將多個動態用戶添加到數據庫中的記錄中。下面是粗糙的起始頁:jquery.clone()和ASP.NET Forms

<div id="records"> 
     <div id="userRecord"> 
      Name: <asp:TextBox runat="server" ID="objNameTextBox"></asp:TextBox> <br /> 
      Phone Number: <asp:TextBox runat="server" ID="objPhoneNumberTextBox"></asp:TextBox> <br /> 
     </div> 
    </div> 

而jQuery的:

$(function() { 
    $(".button").button().click(function (event) { addnew(); event.preventDefault(); }); 
    }) 
    function addnew() { 
     $('#userRecord').clone().appendTo('#records'); 
    } 

所以我的問題是什麼我用在ASP.NET中能夠查詢所有數據的形式,並添加#records div中每個#userRecord div的唯一記錄?是的 - 我應該將userRecord更改爲一個類 - 我將處理這個問題。這只是簡單的測試。

我應該看看JSON中的這種類型的功能嗎?我不熟悉它,但可以弄清楚,如果這確實是我最好的選擇。感謝您的指導!

+1

Javascript DOM操作和ASP.NET WebForms不是很好的朋友 – 2010-06-14 20:29:47

回答

2

你不能用Javascript複製ASP.NET web表單控件,因爲運行時會跟蹤HTML中的控件,如果你試圖用Javascript複製它們,你複製HTML並且它們可能看起來相同,但ASP .NET不會了解它們。

你可以使用UpdatePanel來做到這一點,並用你的按鈕觸發一個回發,並以編程方式在你的後端創建控件並將它們附加到所述面板,這將模仿你正在嘗試做什麼。

另一種方法是創建HTML輸入並將其提交給Web服務或Web方法,並在那裏對數據庫進行實際插入,但正常的ASP.NET方法不能在所述輸入上工作,因爲它們就ASP.NET而言並不是控件。

+3

我讀了「你不能用Javascript重複ASP.NET web表單控件......」,現在我想知道如果可能*有*某種方式這可以做... – 2010-06-14 20:39:52

+0

感謝您節省了我的時間和挫折感。 – Jeff 2010-06-15 13:20:09

0

如果您嘗試在ASP.NET頁面回發期間添加新記錄,那麼......祝您好運。我不確定你可以添加新的'項目'列表客戶端。 ASP.NET WebForms使用視圖狀態(這實際上只是直接嵌入到返回給用戶的頁面的HTML中的一大塊信息)來維護頁面的狀態,我不認爲您可以輕鬆地(我'當然這是理論上可能)更新視圖狀態客戶端(無論你是否使用jQuery甚至JavaScript)。

也許我自己的情況是相似的。如果我有一個包含項目列表的頁面,並且希望允許用戶添加新項目,那麼我會添加適當的輸入字段,並添加一個特殊按鈕,以便爲其綁定JavaScript函數(通過jQuery)向Web服務(Visual Studio項目中的另一項)發出AJAX請求,並使用JSON來回傳遞數據(比使用默認XML簡單得多)。這樣整個頁面就不需要發佈到web服務器上,用戶可以更改後端數據,也不需要(以某種方式)解析頁面數據本身,以確定需要添加哪些項目數據庫。