2011-04-04 26 views
1

基於文本框「自動完成」功能,用戶可以在結果列表中進行選擇,然後用戶將選擇其中一個結果並將其添加到「籃子」中,用戶執行多個快速搜索,並添加或刪除這個籃子裏的物品。提交後丟失表格的jQuery DOM操作

目前我已經使用表格作爲「籃子」。一旦用戶對籃子滿意,用戶將籃子提交給服務器,並且服務器通過籃子循環並更新數據庫。

我想用jQuery來操作表格,問題是一旦回發發生,DOM操作被刪除。

該表格如下所示。

<asp:Table ID="Basket" 
runat="server" 
EnableViewState="False"> 
    <asp:TableHeaderRow TableSection="TableHeader"> 
     <asp:TableHeaderCell>ID</asp:TableHeaderCell> 
     <asp:TableHeaderCell>Name</asp:TableHeaderCell> 
     <asp:TableHeaderCell>Quantity</asp:TableHeaderCell> 
    </asp:TableHeaderRow> </asp:Table> 

與jQuery我可以修改表,添加行,刪除它們,一切都很好,花花公子。然後,我要通過我的表中的行中的按鈕i循環的Click事件提交按鈕

<asp:Button ID="Button1" runat="server" Text="Submit" onclick="Button1_Click" />

foreach (TableRow row in this.Basket.Rows) 
{ 
      if (row.TableSection != TableRowSection.TableBody) { continue; } 
} 

這就是問題的所在,該表將重置爲初始狀態只包含1行。考慮到我禁用了ViewState,我會認爲控件會模仿發佈的內容。但顯然有些東西使它重置。

回答

2

您正在考慮這一切都是錯誤的,Javascript是前端,沒有告訴服務器行已添加,它永遠不會知道,因此它只會添加一行,因爲它告訴它做。

您需要保存的值不知何故

+0

意圖是創建僅頁面上的「菜籃子」,並進行批量提交,一旦提交該項目的ID和數量被存儲在服務器端,這將防止不斷的顫音,​​並使用戶界面更像桌面,如 – thmsn 2011-04-04 07:31:40

+0

是的。我同意那個。 JS是一種客戶端技術,您需要實現JS客戶端代碼和服務器端代碼之間的通信。如果您沒有以某種方式將更新提交給服務器端,它如何知道? HTTP是一個斷開的協議。 – 2011-04-04 07:33:17

+0

你可以這樣做,它是迄今不是唯一的方法做到這一點,但: 我會將值添加到隱藏字段(在JSON中)並解析它的服務器端。 – 2011-04-04 07:35:18