【问题标题】:DataGridView order selected rows on top of the tableDataGridView 在表格顶部排序选定的行
【发布时间】:2018-07-09 07:22:32
【问题描述】:

我想通过应插入 DataTable 顶部的选定行重新排列 DataGridView 中的 DataTable。-

在我对行进行排序之前它的外观:

以及在我订购它们后应该如何处理:

我用后面的代码尝试了它,但它非常慢,因为我在 DataTable 的每一行上都使用了一个 for 循环:

if (MainWindow.table_G_Level_Data.dataGridView1.SelectedRows.Count > 0)
{
   int count = MainWindow.table_G_Level_Data.dataGridView1.Rows.Count;
   DataTable tempTableDataSource = new DataTable();

   int selectorCounter = 0;

   tempTableDataSource = (DataTable)(MainWindow.table_G_Level_Data.dataGridView1.DataSource);
   tempTableClone = tempTableDataSource.Clone();

   for (int i = 0; i < MainWindow.table_G_Level_Data.dataGridView1.Rows.Count; i++)
   {
      if (MainWindow.table_G_Level_Data.dataGridView1.Rows[i].Selected == true)
      //first add all selected rows to get them on top
      {
         DataRow dr = ((DataRowView)MainWindow.table_G_Level_Data.dataGridView1.Rows[i].DataBoundItem).Row;
         tempTableClone.ImportRow(dr);
         selectorCounter++;
      }
   }

   for (int i = 0; i < MainWindow.table_G_Level_Data.dataGridView1.Rows.Count; i++)
   {
      if (MainWindow.table_G_Level_Data.dataGridView1.Rows[i].Selected == false)        
      //second add all unselected rows to get them below the selected
      {
         DataRow dr = ((DataRowView)MainWindow.table_G_Level_Data.dataGridView1.Rows[i].DataBoundItem).Row;
         tempTableClone.ImportRow(dr);
      }
   }

   MainWindow.table_G_Level_Data.dataGridView1.DataSource = tempTableClone;

   for (int i = 0; i < selectorCounter; i++)
   {

     MainWindow.table_G_Level_Data.dataGridView1.Rows[i].Selected = true;
   }
}

不幸的是,既没有一种方法可以将选定的行排在最前面,也没有办法因为只读而更改索引。也许有人有一个好主意来帮助我。谢谢!

【问题讨论】:

    标签: c# winforms datagridview datatable


    【解决方案1】:
    1. 添加一些隐藏列(命名为“选定”)
    2. 在选择行时将其值设置为“1”(或任何适合您的值)
    3. 使用DataGridView.Sort(...) 方法对该列和Splitter1 列进行排序/排序。

    请参阅this 了解如何对多列进行排序。

    【讨论】:

    • 好主意!然后我可以隐藏此列:this.dataGridView1.Columns["flagColumn"].Visible = false;
    猜你喜欢
    • 2011-09-30
    • 2012-11-11
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    相关资源
    最近更新 更多