2012-03-10 46 views
1

我實現從 http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/jQuery用戶界面的Widget多選:回發後只剩下最後選擇的元素被選中

這個jQuery UI的多選我設法得到它在我的asp.net頁面中使用,但由於某種原因後回發,選定的文本只顯示最後一個檢查的元素。

這裏是我的代碼

$("document").ready(function() { 

    $("#ListBox1").multiselect({ 

     noneSelectedText: 'Select', 
     selectedList: 200 

    }); 

    $("#ListBox2").multiselect({ 

     noneSelectedText: 'Select', 
     selectedList: 200 

    }); 

    function GetSelectedListBox() { 


    var array_of_checked_values = $("#ListBox1").multiselect("getChecked").map(function() { 
     return this.value; 
    }).get(); 

    var array_of_checked_values1 = $("#ListBox2").multiselect("getChecked").map(function() { 
     return this.value; 
    }).get(); 

    $("#HiddenField1").val(array_of_checked_values); 

    $("#HiddenField2").val(array_of_checked_values1); 


} 

}); 


<body> 
    <form id="form1" runat="server"> 
    <div style="font:12px Helvetica, arial, sans-serif;"> 
     <asp:ListBox ID="ListBox1" runat="server"></asp:ListBox> 
     <asp:ListBox ID="ListBox2" runat="server"></asp:ListBox> 
     <asp:HiddenField ID="HiddenField1" runat="server" /> 
     <asp:HiddenField ID="HiddenField2" runat="server" /> 
    </div> 
    <div> 
     <asp:Button ID="btn1" runat="server" Text="Press" OnClientClick="GetSelectedListBox();" onclick="btn1_Click" /> 
    </div> 
    </form> 
</body> 

在我的服務器端代碼

ListBox2.DataSource = dt; 
ListBox2.DataTextField = "Id"; 
ListBox2.DataValueField = "ListValue"; 
ListBox2.DataBind(); 

protected void btn1_Click(object sender, EventArgs e) 
{ 
    Response.Write(HiddenField1.Value); 

    Response.Write(HiddenField2.Value); 
} 

任何想法,爲什麼會只顯示最後選擇的元素,但有趣的這個在HiddenField的值是顯示「值1 ,值2,值3,值21「,而小部件盒僅顯示值21,並且僅當在回發之前檢查的所有元素在小部件中被檢查時僅值21消耗掉

謝謝

回答

0

我其實只是有同樣的問題。

嘗試使用與選擇模式列表框爲多,我有一個回發在我的網頁和值呆在那裏

<asp:ListBox ID="ListBox1" SelectionMode="Multiple" runat="server"></asp:ListBox> 

也似乎沒有成爲一個的SelectedItem * S *爲列表框在asp.net只在形式,所以你需要手動執行此操作是這樣的

private String GetSelectedItems(ListBox listbox) 
{ 
    String SelectedValues = ""; 

    foreach (ListItem item in listbox.Items) 
    { 
     if(item.Selected == true) 
      SelectedValues = SelectedValues + "," + item.Text ; 
    } 

    if (SelectedValues.Length > 1) 
     SelectedValues = SelectedValues.Remove(0, 1); 

    return SelectedValues; 
} 

這對我的作品值後留每個回來後,我可以在代碼中訪問選定值的列表behing :),讓我知道它是否可以幫助你

3

我已經做了一個臨時修復,我已經知道不是最好的解決方案,但它的工作,直到我找到正確的方式來做到這一點。

我已經爲每個選擇創建了一個隱藏字段,在提交表單之前,我使用選項的值設置了隱藏字段。

所以我可以在控制器上得到這個值。

$('#muestraForm').submit(function() { 
$("#hidden_temporal_field").val($("#select_field").val()); 
return true; 
}); 
相關問題