2015-01-08 33 views
0

我有一個列表框,我已經應用了一個Chosen jquery插件。所以在頁面加載我去DB和綁定項目。這工作正常,所有的自動完成功能等,然後我更新這些值到數據庫。在Multiselect asp列表框中設置選定的項目(使用jQuery插件 - 選擇)

當我reaload此項目時,我想採取以前保存的值,並使其成爲選定的項目。

我可以得到ListItems我需要將選定的屬性設置爲true。但是當我嘗試下面的代碼時,什麼都沒有發生箱子是空的,沒有物品被選中。我怎麼能這樣。有沒有辦法從後面的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:我用的獲選1.3,ASP.NET提前4.0

感謝

+0

'ddlMultiSelect.SelectedIndex = ddlMultiSelect.Items.IndexOf(ddlMultiSelect.Items .FindByValue(li.Value));'給那個鏡頭 – prospector

回答

1

添加了這個在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); 

     } 
相關問題