如何在DataTable中插入“空”行?

时间:2010-10-18 12:44:00

标签: c# .net linq-to-sql devexpress

我正在使用 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();
        }
    }

3 个答案:

答案 0 :(得分:3)

我实际上在最近使用DevExpress的LookUpEdit控件的应用程序中遇到了一个非常类似的问题 - 一旦选择具有 no 选择,就无法将控制恢复为 no 选择已经完成了。

我的解决方法是:

  1. LookUpEdit.Properties.AllowNullInput属性设置为true
  2. LookUpEdit.Validating事件添加事件处理程序。
  3. 在该事件处理程序中,检查空字符串作为Text属性,并手动将EditValue设置为null
  4. 换句话说,就像这样:

    void m_lookUpEdit_Properties_Validating(object sender, CancelEventArgs e)
    {
        if (string.IsNullOrEmpty(m_lookUpEdit.Text))
        {
            m_lookUpEdit.EditValue = null;
        }
    }
    

    这允许用户清除控件中的文本,并将其有效地重置为null

答案 1 :(得分:2)

我搜索了devexpress社区内容,发现它无法直接添加到控件中。

但是可以通过数据源操作来完成。 我在这里找到了这个例子:

http://www.devexpress.com/Support/Center/p/AS13948.aspx

答案 2 :(得分:0)

你为什么不尝试这样的事情:

    dropdown.DataSource = GetMaintItems(x);
    dropdown.DataTextField = "Name";
    dropdown.DataValueField = "ID";
    dropdown.DataBind();
    dropdown.Items.Insert(0, new ListItem("Select item", "-1"));

谢谢, Flores的