我正在使用 DevExpress LookUpEdit
控件。我的数据库有两个表来控制控制选项的数量。一个叫做MaintCategory,一个叫做MaintItem。这会在我的程序中引入一个Magic Number(CategoryID),但允许大量的运行时自定义。
我的问题在于如何允许我的用户取消选择下拉列表而不必为每个CategoryID
添加“空”项。是不是有办法注入空白行?在控制级别或构建DataTable
以返回?
这是我用来填充所有控件选项的DAL方法。
public static DataTable GetMaintItems(int iCat)
{
using (var context = CmoDataContext.Create())
{
IQueryable<tblAdminMaintItem> tItems = context.GetTable<tblAdminMaintItem>();
return (tItems.Where(item => item.CategoryID == iCat & item.Active == true).OrderBy(item => item.OrderID).Select(
item => new { item.ItemID, item.ItemDescription })).CopyLinqToDataTable();
}
}
答案 0 :(得分:3)
我实际上在最近使用DevExpress的LookUpEdit
控件的应用程序中遇到了一个非常类似的问题 - 一旦选择具有 no 选择,就无法将控制恢复为 no 选择已经完成了。
我的解决方法是:
LookUpEdit.Properties.AllowNullInput
属性设置为true
。LookUpEdit.Validating
事件添加事件处理程序。Text
属性,并手动将EditValue
设置为null
。换句话说,就像这样:
void m_lookUpEdit_Properties_Validating(object sender, CancelEventArgs e)
{
if (string.IsNullOrEmpty(m_lookUpEdit.Text))
{
m_lookUpEdit.EditValue = null;
}
}
这允许用户清除控件中的文本,并将其有效地重置为null
。
答案 1 :(得分:2)
我搜索了devexpress社区内容,发现它无法直接添加到控件中。
但是可以通过数据源操作来完成。 我在这里找到了这个例子:
答案 2 :(得分:0)
你为什么不尝试这样的事情:
dropdown.DataSource = GetMaintItems(x);
dropdown.DataTextField = "Name";
dropdown.DataValueField = "ID";
dropdown.DataBind();
dropdown.Items.Insert(0, new ListItem("Select item", "-1"));
谢谢, Flores的