javascript - 在多选 asp 列表框中设置所选项目(使用 jQuery 插件-Chosen )

标签 javascript asp.net jquery-chosen

我有一个列表框,我在其中应用了选择的 Jquery 插件。因此,在页面加载时,我转到数据库并绑定(bind)项目。这与它的所有自动完成功能等配合得很好。然后我将这些值更新到数据库。

当我重新加载此项目时,我想采用之前保存的值并将其设为选定的项目。

我可以获得需要将 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);

        }

关于javascript - 在多选 asp 列表框中设置所选项目(使用 jQuery 插件-Chosen ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27847961/

相关文章:

javascript - Web2py - 如何确定 ajax 后加载控制的结束

javascript - 如何告诉 npm 在安装时使用父项目的依赖项构建模块?

javascript - 隐藏 Popup Div 无法正常工作

asp.net - ')' 附近的语法不正确。当尝试将值插入数据库时

asp.net - 在 MS Access 中双插入?

javascript - 选择一项后将所有其他选择项变灰(禁用)吗?

twitter-bootstrap - 如何将 bootstrap popover 与 selected 一起使用?

javascript - Dailymotion 视频自动播放和静音

javascript - 如何从 React .Map 函数内部更改状态

javascript - Angular 复选框 “Select All” 功能不起作用