Как найти данные и изменить индекс данных в существующей таблице данных? - PullRequest
0 голосов
/ 25 октября 2011

У меня есть существующая DataTable с тысячами строк, и я хочу найти строки и установить их в верхние строки.

Ответы [ 3 ]

0 голосов
/ 25 октября 2011

Я не знаю, сможете ли вы, но я бы, вероятно, добавил фиктивный столбец для сортировки, дал бы нужным вам строкам более высокое значение в фиктивном столбце, а затем отсортировал бы по столбцу от большего к меньшемус 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();
    }
0 голосов
/ 15 июля 2015
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++;

}
0 голосов
/ 25 октября 2011

Вы можете попробовать удалить и вставить строку

        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;
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...