2010-08-27 19 views
4

後,我有我試圖通過jQuery來填充,使用下面的代碼片段一個ASP.Net的ListBox:ASP.Net - <select>項目沒有被調回jQuery的填充列表

$("#MyList_btnAddAll").click(function(e) { 
    e.preventDefault(); 
    $('#MyList_lstAll option').appendTo('#MyList_lstSelected'); 
}); 

的代碼有實際上兩個ListBoxes,一個是「源」,另一個是「目的地」。正如你可以看到上面的列表框是MyList_lstAll和MyList_lstSelected。這些在瀏覽器中作爲元素呈現,就像你所期望的那樣。

jQuery的是偉大的工作,項目從一個列表框移動到另一個時,DOM更新,但是當我後我的頁面時,回發不表示任何改變列表框。我知道有一些涉及jQuery和ASP.Net回發的問題,但是有人可能會指導我一些可能發生的事情,以及我如何才能使其工作?

[編輯]

按要求,這裏的一些更多的ASP.Net和HTML造成的。以下是在持有它們的ascx控件列表框和按鈕聲明:

<GLP:ListBox ID="lstAll" CssClass="LIST_BOX_MEDIUM" runat="server" SelectionMode="Multiple"/> 

<asp:LinkButton ID="lnkAddAll2" CssClass="LIST_SELECT" runat="server" OnClick="btnAddAll_Click"/> 

<GLP:ListBox ID="lstSelected" CssClass="LIST_BOX_MEDIUM" runat="server" SelectionMode="Multiple"/> 

而生成的HTML:

<select class="LIST_BOX_MEDIUM" id="MyList_lstAll" multiple="multiple" name="MyList:lstAll" size="4"> 
<option value="641">Item1</option><option value="598">Item2</option> 
</select> 

<input type="submit" class="BUTTON_SMALL_N0_IMAGE" id="MyList_btnAddAll" value="Add All" name="MyList:btnAddAll" style="color: rgb(0, 0, 0);"> 

<select class="LIST_BOX_MEDIUM" id="MyList_lstSelected" multiple="multiple" name="MyList:lstSelected" size="4"> 
<option value="642">Item3</option><option value="599">Item4</option> 
</select> 

我知道了jQuery /列表框項的修改不會反映在ViewState中,但因爲它們在頁面發佈時在DOM中不會被包含在回發數據中,然後由它們各自的控件拾取?

+1

請張貼在下拉列表中選擇HTML/ASP.NET來源 - 這可能是有益的,看看。 – 2010-08-27 19:18:47

回答

3

我想你會需要直接從該請求獲得seletcted項目列表,而從asp.net控件屬性thsn,像這樣:

string results = Request.Form[list_box.UniqueID]; 
4

IIRC,你不能得到這個原因是什麼ASP.Net在回傳列表框期待的工作。我過去使用的一種方法是創建一個隱藏的輸入字段,其中runat =「server」,並填充選定的ID,分號分隔。

隱藏的輸入值將可在回發。

1

問題是,你的控制是在回傳重新使用視圖狀態(或控制狀態)當然不能反映你的改變。一種可能性是進入後直接使用Request對象在服務器端(如雷之前說的)