【问题标题】:RadComboBox wrong selected valueRadComboBox 选择的值错误
【发布时间】:2012-06-18 10:32:49
【问题描述】:

我在使用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

【问题讨论】:

  • 我认为您应该先将一个项目添加到集合中,然后再将其用作数据源...

标签: c# asp.net .net telerik radcombobox


【解决方案1】:

在数据绑定前添加NewList项,并将以下属性添加到R​​adComboBox。

将 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();

【讨论】:

  • 当我在 (!page.IsPostBack) 中调用它时,我收到以下客户端错误:There is no assigned datasource,unable to complete callback request
  • 让你设置 AppendDataBoundItems=true
  • 您也可以执行以下方法,protected void RadComboBox1_DataBound(object sender, EventArgs e) { var combo = (RadComboBox)sender; combo.Items.Insert(0, new RadComboBoxItem("选择一个国家", string.Empty)); }
【解决方案2】:

单独添加而不是绑定怎么样。

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; 

【讨论】:

  • 我做到了,它可以工作,但是当有很多项目时,comcbo box 会变得如此繁重!!
  • 您可能需要考虑使用 OnItemsRequested。当用户开始在组合框中输入内容时,它会通过 ajax 加载组合框项。 demos.telerik.com/aspnet-ajax/combobox/examples/…
猜你喜欢
  • 1970-01-01
  • 2015-10-23
  • 2017-01-31
  • 1970-01-01
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多