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 ?


person Anyname Donotcare    schedule 18.06.2012    source источник
comment
Я думаю, вы должны добавить элемент в коллекцию, прежде чем использовать его в качестве источника данных...   -  person Marco    schedule 18.06.2012


Ответы (2)


Добавьте элемент 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();
person Rajesh Subramanian    schedule 18.06.2012
comment
когда я вызываю его в (!page.IsPostBack), я получаю следующую ошибку клиента: There is no assigned datasource,unable to complete callback request - person Anyname Donotcare; 18.06.2012
comment
Вы установили AppendDataBoundItems = true - person Rajesh Subramanian; 18.06.2012
comment
Вы также можете использовать следующий метод: protected void RadComboBox1_DataBound (отправитель объекта, EventArgs e) { var combo = (RadComboBox) отправитель; combo.Items.Insert(0, new RadComboBoxItem(Выберите страну, string.Empty)); } - person Rajesh Subramanian; 18.06.2012
comment
telerik.com/help/aspnet- аякс/ - person Rajesh Subramanian; 18.06.2012

Как насчет добавления их по отдельности вместо привязки.

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; 
person Win    schedule 21.06.2012
comment
Я сделал это, и это работает, но когда элементов много, comcbo box загружается так тяжело !! - person Anyname Donotcare; 22.06.2012
comment
Возможно, вы захотите рассмотреть возможность использования OnItemsRequested. Он загружает элементы со списком через ajax, когда пользователь начинает печатать внутри поля со списком. demos.telerik.com/aspnet-ajax/combobox/ примеры/ - person Win; 22.06.2012