2009-09-15 84 views
2

我行動態使用jQuery添加到divStaff:jQuery的追加+代碼隱藏

$("span[id$='lblAddStaff']").click(function() { 
     //$(".staff_tpl").find("input[id$='txtRate']").val("0,00"); 
     var staff_row = $(".staff_tpl"); 
     staff_row.find(".staff_row").attr("id", "Emp" + counter); 
     $("div[id$='divStaff']").append(staff_row.html()); 
     counter += 1;    
    }); 

是我添加的行是隱藏的分度類內部= 我追加的內容「staff_tpl。」這個div到divStaff

當我提交頁面(回發),所產生的divStaff總是空的,如果我嘗試這樣顯示的:基本上

lblTest.Text = divStaff.innerHtml.ToString 

,我操縱一個div客戶端,我想通過我的aspx頁面的代碼訪問它的服務器端。我想我在這裏錯過了一個基本原則。

+0

不可能! – TheVillageIdiot 2009-09-15 09:13:29

回答

1

這是無法完成的。
如果您想要訪問已創建頁面的數據,則必須將其放置在輸入字段(可能隱藏)中,並在發佈後使​​用Request.Form["MyHiddenFieldName"]進行訪問。
<div> s沒有發佈到服務器。在ViewState(一個大字符串,真的 - 你可以在你的頁面的源代碼中看到它)給出抽象的連續性(或它的錯覺)。但是,這種刺痛並沒有意識到您在DOM中所做的更改。
處理runat="server"元素時,您會在服務器端上看到您最近所做的更改,但客戶端更改已消失。
只有<input>(以及文本區域,選項等)值在提交時發佈到服務器,因此在頁面發佈之後,在服務器上可以看到客戶端上的這些值。

+0

我的印象是,加入runat =「server」和一個唯一的ID給一個div可以讓你訪問它的服務器端?這不是這種情況嗎? – 2009-09-15 08:55:55

+0

您可以在服務器端使用runat =「server」訪問div。 – rahul 2009-09-15 09:05:19

+0

@phoenix - 當然,但不會改變您使用jQuery所做的更改。我在哪裏錯了嗎? – Kobi 2009-09-15 09:08:05