如何查找数据表和更改现有数据表中数据表的索引

本文关键字:数据表 索引 何查找 查找 | 更新日期: 2023-09-27 18:12:24

我有一个现有的数据表,有1000行,我想找到这些行,并将其设置为顶部行。

如何查找数据表和更改现有数据表中数据表的索引

我不知道你是否能够,但我可能会添加一个虚拟列来排序,在虚拟列中给出你想要的更高的值,然后用DataView按列从大到小排序。

    private void ModifyTable(DataTable toModify)
    { //Add a column to sort by later. 
        DataColumn col = toModify.Columns.Add("DummySort", typeof(int));
        col.DefaultValue = 0;
    }
    private void SetDummyColumnValue(DataRow dr, int value)
    { //Mark the columns you want to sort to bring to the top. 
        //Give values bigger than 0! 
        dr["DummySort"] = value;
    }
    private DataTable GetSortedTable(DataTable modifiedTable)
    {
        //Sort by the column from bigger to smaller 
        DataView dv = new DataView(modifiedTable);
        dv.Sort = "DummySort DESC"; return dv.ToTable();
    }

您可以尝试删除和插入行

        public void MoveDataRowTo(DataRow dataRow,int destination)
        {
            DataTable parentTable = dataRow.Table;
            int rowIndex = parentTable.Rows.IndexOf(dataRow);
            if (rowIndex > 0)
            {
                DataRow newDataRow = parentTable.NewRow();
                for (int index = 0; index < dataRow.ItemArray.Length; index++)
                    newDataRow[index] = dataRow[index];
                parentTable.Rows.Remove(dataRow);   
                parentTable.Rows.InsertAt(newDataRow, destination);
                dataRow = newDataRow;
            }
        }
DataSet dsAct = new DataSet();
OleDbDataAdapter odaTem = new OleDbDataAdapter("SELECT ActivityId, Activity FROM tbl_Activity", ocnConn);
odaTem.Fill(dsAct, "Activity");
DataRow drTem;
int i = 0;
//Rows want set to be on top is in the table "TopActivity"
foreach (DataRow dr in dsAct.Tables["TopActivity"].Rows)
{
drTem = dsAct.Tables["Activity"].NewRow();
//Clone the row
drTem.ItemArray = dsAct.Tables["Activity"].Rows.Find(dr["Activity_ID"]).ItemArray;
dsAct.Tables["Activity"].Rows.RemoveAt(  dsAct.Tables["Activity"].Rows.IndexOf( dsAct.Tables["Activity"].Rows.Find(dr["Activity_ID"])));
dsAct.Tables["Activity"].Rows.InsertAt(drTem, i);
i++;
}