在 Multiselect asp 列表框中设置所选项目(使用 jQuery plugin-Chosen )
Set selected items in a Multiselect asp Listbox (which uses jQuery plugin-Chosen )
我有一个列表框,我在上面应用了 Chosen Jquery 插件。因此,在页面加载时,我转到数据库并绑定项目。这适用于所有自动完成功能等。然后我将这些值更新到数据库。
当我重新加载这个项目时,我想使用之前保存的值并将其设为所选项目。
我可以获得需要将 Selected Proprty 设置为 true 的 ListItems。但是当我尝试下面的代码时,什么也没有发生。该框为空,未选择任何项目。我怎么能这样。有没有办法从后面的 C# 代码中解决这个问题?
foreach (ListItem li in mySelectedListItemCollection)
{
if (li.Selected)
{
ddlMultiSelect.Items.FindByValue(li.Value).Selected = true
}
}
我的控件看起来像
<%@ Control Language="C#" CodeBehind="Edit.ascx.cs" blah blah %>
<asp:ListBox ID="ddlMultiSelect" SelectionMode="Multiple" data-placeholder="Choose…" class="chosen-select" multiple Style="width: 350px;" runat="server">
</asp:ListBox>
<form>
<script type="text/javascript">
var config = {
'.chosen-select': {},
'.chosen-select-deselect': { allow_single_deselect: true },
'.chosen-select-no-single': { disable_search_threshold: 10 },
'.chosen-select-no-results': { no_results_text: 'Oops, nothing found!' },
'.chosen-select-width': { width: "95%" }
}
for (var selector in config) {
$(selector).chosen(config[selector]);
}
</script>
</form>
<header>
<script type="text/javascript">
$(document).ready(function () {
$("#<%=ddlMultiSelect.ClientID %>").change(function () {
var arr = $(this).val();
if (typeof arr === 'object' && arr instanceof Array) {
document.getElementById('<%=lbltest.ClientID%>').value = arr.toString();
}
else { document.getElementById('<%=lbltest.ClientID%>').value = ""; }
console.log(arr)})
});
</script>
</header>
基本上在 DataBound 事件中,我想重置保存在数据库中的选定项目。
PS:我使用的是 Chosen 1.3 , ASP.NET 4.0
提前致谢
在 OnDataBound 事件中添加了这个
foreach (object childEntity in childTable.GetQuery(ObjectContext))
{
ListItem listItem = new ListItem(
childTable.GetDisplayString(childEntity),
childTable.GetPrimaryKeyString(childEntity));
if (Mode == DataBoundControlMode.Edit)
{
listItem.Selected = ListContainsEntity(childTable, entityCollection, childEntity);
}
ddlMultiSelect.Items.Add(listItem);
}
我有一个列表框,我在上面应用了 Chosen Jquery 插件。因此,在页面加载时,我转到数据库并绑定项目。这适用于所有自动完成功能等。然后我将这些值更新到数据库。
当我重新加载这个项目时,我想使用之前保存的值并将其设为所选项目。
我可以获得需要将 Selected Proprty 设置为 true 的 ListItems。但是当我尝试下面的代码时,什么也没有发生。该框为空,未选择任何项目。我怎么能这样。有没有办法从后面的 C# 代码中解决这个问题?
foreach (ListItem li in mySelectedListItemCollection)
{
if (li.Selected)
{
ddlMultiSelect.Items.FindByValue(li.Value).Selected = true
}
}
我的控件看起来像
<%@ Control Language="C#" CodeBehind="Edit.ascx.cs" blah blah %>
<asp:ListBox ID="ddlMultiSelect" SelectionMode="Multiple" data-placeholder="Choose…" class="chosen-select" multiple Style="width: 350px;" runat="server">
</asp:ListBox>
<form>
<script type="text/javascript">
var config = {
'.chosen-select': {},
'.chosen-select-deselect': { allow_single_deselect: true },
'.chosen-select-no-single': { disable_search_threshold: 10 },
'.chosen-select-no-results': { no_results_text: 'Oops, nothing found!' },
'.chosen-select-width': { width: "95%" }
}
for (var selector in config) {
$(selector).chosen(config[selector]);
}
</script>
</form>
<header>
<script type="text/javascript">
$(document).ready(function () {
$("#<%=ddlMultiSelect.ClientID %>").change(function () {
var arr = $(this).val();
if (typeof arr === 'object' && arr instanceof Array) {
document.getElementById('<%=lbltest.ClientID%>').value = arr.toString();
}
else { document.getElementById('<%=lbltest.ClientID%>').value = ""; }
console.log(arr)})
});
</script>
</header>
基本上在 DataBound 事件中,我想重置保存在数据库中的选定项目。 PS:我使用的是 Chosen 1.3 , ASP.NET 4.0
提前致谢
在 OnDataBound 事件中添加了这个
foreach (object childEntity in childTable.GetQuery(ObjectContext))
{
ListItem listItem = new ListItem(
childTable.GetDisplayString(childEntity),
childTable.GetPrimaryKeyString(childEntity));
if (Mode == DataBoundControlMode.Edit)
{
listItem.Selected = ListContainsEntity(childTable, entityCollection, childEntity);
}
ddlMultiSelect.Items.Add(listItem);
}