首页 > 解决方案 > 为什么这个 RadComboBox 不显示我的选择

问题描述

我有这个 Telerik ComboBox

                  <telerik:RadComboBox 
            runat="server" 
            ID="ddlSpecialist"
            AutoPostBack="True"            
            EnableLoadOnDemand="True"
            HighlightTemplatedItems="True"           
            OnClientItemsRequested="UpdateEmployeesCountField" 
            EnableItemCaching="True" 
            DropDownWidth="200px"
            OnItemsRequested="ddlSpecialist_ItemsRequested"  
            onclientblur="OnClientBlurHandler"                                                                                                 
            Width="75px"                                                                                                                    
          >

下拉菜单有效,并向我显示了预期的数据。但是,当我选择其中一个值时,组合框选择不会显示所选的 EID。它会更改,然后将此文本显示为所选项目“Pirs2020.VW_EMP”,而不是我预期的 EID 号。Pirs2020.VW_EMP 是 Visual Studio 项目的名称和用于填充 ComboBox 的视图的名称。

这是我用来填充 ComboBox 的代码:

protected void ddlSpecialist_ItemsRequested(object sender, Telerik.Web.UI.RadComboBoxItemsRequestedEventArgs e)
    {
        using (PIRSXEntities db = new PIRSXEntities())
        {
            var allPersonnel = db.VW_EMP.OrderBy(a => a.EID);
            if (!String.IsNullOrEmpty(e.Text))
            {
                allPersonnel = db.VW_EMP.Where(i => i.EID.ToString().Contains(e.Text.Trim()))
                    .OrderBy(i => i.EID);
            }
            IQueryable<VW_EMP> personnel = allPersonnel.Skip(e.NumberOfItems).Take(10);
            ddlSpecialist.DataSource = personnel.Distinct().ToList();
            ddlSpecialist.DataBind();
            int endOffset = e.NumberOfItems + personnel.Count();
            int totalCount = allPersonnel.Count();

            if (endOffset == totalCount)
                e.EndOfItems = true;

            e.Message = String.Format("Items <b>1</b>-<b>{0}</b> out of <b>{1}</b>",
                endOffset, totalCount);
        }
    }

为什么我将这个奇怪的项目显示为我选择的值?

标签: c#telerikradcombobox

解决方案


我能够找到问题所在。问题是我未能设置 DataText 和 Data Value 的值。我在 dataSource 值的设置和 Data Bind 命令之间添加了以下代码。所以看起来像这样

 ddlSpecialist.DataSource = personnel.Distinct().ToList();
            ddlSpecialist.DataTextField = "Full_Name";
            ddlSpecialist.DataValueField = "EID";
            ddlSpecialist.DataBind();

推荐阅读