2012-06-18 5 views
2

сталкиваются со следующей проблемой, когда я использую RadComboBox:RadComboBox неправильно выбранное значение

ddl_contactList.Items.Clear(); 
    ddl_contactList.DataSource = ContactList.GetContactListsByDep(year, main_code); 
    ddl_contactList.DataTextField = "list_desc"; 
    ddl_contactList.DataValueField = "list_code"; 
    ddl_contactList.DataBind(); 
    ddl_contactList.Items.Insert(0, new Telerik.Web.UI.RadComboBoxItem("NewList", "-1")); 
    ddl_contactList.SelectedIndex = 0; 

<telerik:RadComboBox ID="ddl_contactList" runat="server" AutoPostBack="True" CausesValidation="False" 
      CollapseDelay="0" Culture="ar-EG" ExpandDelay="0" Filter="StartsWith" ItemsPerRequest="10" 
      MarkFirstMatch="true" Skin="Outlook" EnableAutomaticLoadOnDemand="True" EmptyMessage="-List name-" 
      ShowMoreResultsBox="True" 
      onselectedindexchanged="ddl_contactList_SelectedIndexChanged" AppendDataBoundItems ="true"> 
    </telerik:RadComboBox> 

всегда число элементов в поле со списком является 1 !!! хотя источник данных содержит много элементов, поэтому, когда я пытаюсь получить выбранное значение для любого элемента в любое время, я всегда получаю -1 !!

Как получить правильный selectedvalue?

+0

Я думаю, вы должны добавить элемент в коллекции, прежде чем использовать его в качестве DataSource ... – Marco

ответ

1

Добавить элемент NewList перед привязкой данных и добавить в RadComboBox следующий атрибут.

Установка AppendDataBoundItems в True сохраняет элементы, которые уже присутствуют в RadComboBox. Это позволяет связывать RadComboBox с несколькими источниками данных или использовать как несвязанные, так и связанные режимы.

Затем добавьте источник данных в элемент управления.

ddl_contactList.Items.Clear(); 
ddl_contactList.Items.Insert(0, new Telerik.Web.UI.RadComboBoxItem("NewList", "-1")); 
ddl_contactList.SelectedIndex = 0; 


ddl_contactList.DataSource = ContactList.GetContactListsByDep(year, main_code); 
ddl_contactList.DataTextField = "list_desc"; 
ddl_contactList.DataValueField = "list_code"; 
ddl_contactList.DataBind(); 
+0

, когда я называю его в (page.IsPostBack!) Я получаю следующую ошибку клиента: 'Там нет назначен DataSource , неспособный выполнить запрос обратного вызова' –

+0

что ур добавляет в! isPostback ??? –

+0

Я называю блок кода выше как метод. –

1

Как насчет того, чтобы добавить их отдельно, а не связывать их.

var items = ContactList.GetContactListsByDep(year, main_code); 

foreach(var item in items) 
{ 
    ddl_contactList.Items.Add(new RadComboBoxItem(item.list_desc, item.list_code)); 
} 

ddl_contactList.Items.Insert(0, new RadComboBoxItem("NewList", "-1")); 
ddl_contactList.SelectedIndex = 0; 
+0

Я сделал это, и он работает, но когда есть много элементов, 'comcbo box 'становится такой тяжелой нагрузкой !! –

+0

Возможно, вы захотите рассмотреть возможность использования OnItemsRequested. Он загружает элементы combobox через ajax, когда пользователь начинает вводить текст внутри выпадающего списка. http://demos.telerik.com/aspnet-ajax/combobox/examples/populatingwithdata/autocompletesql/defaultcs.aspx – Win

Смежные вопросы