我正在实现这个JQuery UI multiselect http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/
我已设法在我的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中的值显示“Value1,Value2,Value3,value21”,而小部件框仅显示值21,并且只有值21被删除为已检入在回发之前检查所有元素的小部件
由于
答案 0 :(得分:3)
我已经做了一个临时修复,我已经知道这不是最好的解决方案,但它一直有效,直到找到正确的方法。
我为每个选择创建了一个隐藏字段,在提交表单之前,我使用选项值设置了隐藏字段。
所以我可以在控制器上获得这个值。
$('#muestraForm').submit(function() {
$("#hidden_temporal_field").val($("#select_field").val());
return true;
});
答案 1 :(得分:0)
我实际上只是遇到了同样的问题。
尝试使用选择模式为多个的列表框,我的页面中有一个回发,值保留在那里
<asp:ListBox ID="ListBox1" SelectionMode="Multiple" runat="server"></asp:ListBox>
另外,在asp.net上似乎没有一个列表框的SelectedItem * s *只在表单上,所以你需要手动完成这样的事情
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中访问所选值的列表:),让我知道它是否对你有所帮助