2016-12-22 63 views
0

如何在頁面加載後使動態元素保留並且該動態元素內的數據傳輸到下一頁?如何將數據傳輸到其他頁面並使動態元素保留?

我需要添加一個包含複選框和文本框的新行。我正在使用Clone()方法創建一個新行。但是,然後,當我點擊提交時,新行添加了新的數據。

有人告訴我clone()方法會做一個臨時元素,它不會在頁面加載後停留。 那麼,我應該使用create()新元素嗎?我也搜索另一種方法,其中某些方法使用asp:placeholder。

而我的下一個問題,我想如何傳輸該動態元素內的數據?通過使用viewstate或會話狀態來使用?因爲我沒有將它綁定到任何嚴格的數據庫和我製作的表單中,只是一個臨時設計,並且在測試完成時該函數應該工作。

對於這種形式,我試圖避免表格格式,目前在div佈局中的一切。

我試過很多方法,從javascript到jquery,從clone()create()方法。但他們都沒有給出我想要的結果。我使用的是aspx網頁形式的VS2012。你的幫助真的很感謝!

下面

是我行的代碼:

<div id="rows" class="block"> 
      <div class="p2"> 
       <input type="checkbox" class="checkbox" runat="server"/> 
       <input id="txt1" type="text" class="clsTxtBox10char" runat="server" maxlength="16" value="0.00" /> &nbsp; 
      </div> 
      <div class="p3">&nbsp;</div> 
      <div class="p4"> 
       <input id="txt2" type="text" class="clsTxtBox10char" runat="server" maxlength="16" value="0.00"/> &nbsp; 
      </div> 
      <div class="p5">&nbsp;</div> 
      <div class="p6"> 
       <input id="txt3" type="text" class="clsTxtBox10char" runat="server" maxlength="16" value="0.00"/> &nbsp; 
       &nbsp; 
       <span style="color:red;">*</span> 
      </div> 
      </div> 

      <div id="btn" class="block" style="text-align:center;"> 
       <asp:Button ID="addrow" runat="server" CssClass="clsButton" Text="Add Row" /> 
       &nbsp; 
      <asp:Button ID="remove" runat="server" CssClass="clsButton" Text="Remove Row" width="90" /> 
       &nbsp; 
      <asp:Button ID="delete" runat="server" CssClass="clsButton" Text="Delete ATL"/> 
      </div> 

下面是我的javascript代碼:

var cloneCount = 1; 
    //add new row 
    $("#addrow").click(function() { 
     $('#rows') 
     .clone(true).find('input:text').attr('id', 'txts' + cloneCount++).val("").end() 
     .attr('id', 'rows' + cloneCount++, 'class', 'block') 
     .insertAfter('[id^=rows]:last'); 
     return false; 
    }); 

    //Remove new row 
    $(document).on('click', '#remove', function() { 
     $('#rows' + --cloneCount).remove(); 
     return false; 
    }); 

    //delete atl 
    $(document).on('click', '#delete', function() { 
     if (!$('.checkbox').prop("checked")) { 
      $find('.checkbox:checked').remove(); 
     } 
    }); 

代碼隱藏:

protected void addrow_click(object sender, EventArgs e) 
{ 
    Panel Panel1 = new Panel(); 

    for (int s = 0; s > 1; s++) 
    { 
     string input = string.Empty; 

     //div that acts like row 
     var row = new HtmlGenericControl("div"); 
     row.ID = "rows" + s.ToString(); 
     row.Attributes.Add("class", "block"); 

     var c1 = new HtmlGenericControl("div"); 
     c1.Attributes.Add("class", "p2"); 
     //add inside div row 
     for (int i = 0; i > 0; i++) 
     { 
      input += "<input id=\"cb" + i.ToString() + "\" type=\"checkbox\" class=\"checkbox\" runat=\"server\" > </input>" 
       + "&nbsp;" + "<input id=\"tb" + i.ToString() + "\" type=\"text\" class=\"clsTxtBox10char\" runat=\"server\"> </input>"; 
     } 
     //add the string in innerHTML as 
     c1.InnerHtml = input; 
     row.Controls.Add(c1); 

     var c2 = new HtmlGenericControl("div"); 
     c2.Attributes.Add("class", "p3"); 
     row.Controls.Add(c2); 

     var c3 = new HtmlGenericControl("div"); 
     c3.Attributes.Add("class", "p4"); 
     //add inside div row 
     for (int i = 0; i > 0; i++) 
     { 
      input += "<input id=\"tbm" + i.ToString() + "\" type=\"text\" class=\"clsTxtBox10char\" runat=\"server\"> </input>"; 
     } 
     //add the string in innerHTML as 
     c3.InnerHtml = input; 
     row.Controls.Add(c3); 

     var c4 = new HtmlGenericControl("div"); 
     c4.Attributes.Add("class", "p5"); 
     row.Controls.Add(c4); 

     var c5 = new HtmlGenericControl("div"); 
     c5.Attributes.Add("class", "p6"); 
     //add inside div row 
     for (int i = 0; i > 0; i++) 
     { 
      input += "<input id=\"tbe" + i.ToString() + "\" type=\"text\" class=\"clsTxtBox10char\" runat=\"server\"> </input>" 
       + "&nbsp;" + "<span style=\"color:red;\">*</span>"; 
     } 
     //add the string in innerHTML as 
     c5.InnerHtml = input; 
     row.Controls.Add(c5); 

     Panel1.Controls.Add(row); 
     Panel1.Controls.Add(new LiteralControl("<br />")); 
    } 
} 

protected void btnSubmit_Click(object sender, EventArgs e) 
    { 

    Response.Redirect("new_page.aspx"); 

    } 
+0

我們可以看到您的.aspx代碼和代碼後面?從它的聲音,你可能錯過了某些東西來堅持行,例如runat =「server」屬性。 –

+0

@peter我已經添加了我的代碼。 – Syafah

+0

Syafah如果你不想保存動態元素,甚至在數據庫中,並沒有在服務器端的地方,你可以將它保存在vrowser本地存儲或cookie中。而且當你加載頁面時,你可以在這裏檢查。如果存在的元素添加到您的DOM –

回答

0

嘗試增加使用代碼動態行後面,而不是jQuery。 要堅持你的runat =「server」元素,你需要讓它們綁定到服務器端的代碼。我懷疑當你嘗試在客戶端做這件事時,這是非常棘手的,因爲服務器端沒有辦法知道你已經用jQuery創建了一個新元素。

刪除您的jQuery代碼,並允許網頁回發,當你點擊一個asp:按鈕。然後處理添加,刪除和刪除的點擊事件。

要添加的行看到這篇文章:https://msdn.microsoft.com/en-us/library/kyt0fzt1.aspx

+0

感謝您的建議@peter。我會先嚐試一下。 – Syafah

相關問題