c# - 为什么这个 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);
}
}
为什么我将这个奇怪的项目显示为我选择的值?
解决方案
我能够找到问题所在。问题是我未能设置 DataText 和 Data Value 的值。我在 dataSource 值的设置和 Data Bind 命令之间添加了以下代码。所以看起来像这样
ddlSpecialist.DataSource = personnel.Distinct().ToList();
ddlSpecialist.DataTextField = "Full_Name";
ddlSpecialist.DataValueField = "EID";
ddlSpecialist.DataBind();
推荐阅读
- javascript - 从 JQuery 的 get 请求转换为 Vue.js
- powershell - 比较 csv 文件和文件夹文件
- azure - 如何使用 IMobileServiceSyncTable - InsertAsync 从后端服务器捕获异常?
- ruby-on-rails - Rails:Chartkick 累积用户图
- javascript - 尝试从另一个项目中的 HTML 页面调用 REST Web 服务 API 并获取项目的属性
- java - Java 图像在 ide 中加载但未构建 jar
- java - Java继承-子类方法覆盖
- java - 如何处理 Spring 中已发布事件的异常
- c# - WebForms 报告查看器 JavaScript 错误
- python - Flask-Admin:如何在 ModelView 中获取模型对象属性?