如何对除一行值之外的数据表进行排序

时间:2015-12-29 04:55:34

标签: c# linq

我需要对数据表进行排序并将数据表值加载到组合框中。然后我需要添加一个名为' All'它应该出现在组合框项目的顶部。到目前为止,这是我的工作,

DataTable dt = bLStatus.GetStatusDetail();
if (dt != null && dt.Rows.Count > 0)
 {
    dt.DefaultView.Sort= "Description ASC";

    cmbCurrentStatus.DataSource = dt;
    cmbCurrentStatus.ValueMember = "Description";
    cmbCurrentStatus.DisplayMember = "Description";

    DataRow row = dt.NewRow();
    row["Description"] = "All";
    dt.Rows.InsertAt(row, 0);                 

  }             

问题是排'所有'得到排序,我需要在顶部显示行如何解决这个问题?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可以尝试插入"全部"进入第0个索引的组合框。语法如下:

Insert(int insertIndex, object insertItem);

一个例子是:

cmbCurrentStatus.Items.Insert(0, (new myClass { Description = ""}));

参考:https://social.msdn.microsoft.com/Forums/en-US/762a58f5-667d-4e97-a107-86312942f966/can-i-add-items-to-a-combobox-at-a-specific-index?forum=wpf

SO中的类似帖子:add an item to combobox before bind data from data base

如果它不起作用,请告诉我。

答案 1 :(得分:0)

我回答了我的问题我只需要将Sorted defaultView复制到另一个新数据表,并将“All”行添加到该数据表并将其绑定到组合框。如下所示,

   DataTable dt = bLStatus.GetStatusDetail();
            if (dt != null && dt.Rows.Count > 0)
            {
                dt.DefaultView.Sort = "Description ASC";
                DataTable dt2 = dt.DefaultView.ToTable();

                DataRow row1 = dt2.NewRow();
                row1["Description"] = "All";
                dt2.Rows.InsertAt(row1, 0);

                cmbCurrentStatus.DataSource = dt2;
                cmbCurrentStatus.ValueMember = "Description";
                cmbCurrentStatus.DisplayMember = "Description";

            }