更改数据集中的记录顺序

Ali*_*Ali 6 c# datagridview dataset winforms

我正在尝试根据用户偏好对数据集中的记录进行排序.我添加了一个按钮(向上移动)以将所选记录向上提升1行,这是我迄今为止所做的事情:

private void btnMoveUp_Click(object sender, EventArgs e)
{
    int index = dataGridView1.CurrentRow.Index;
    if (index >= 1) 
    { 
        var temp = dsWinners.Tables[0].Rows[index];
        dsWinners.Tables[0].Rows[index].Delete();
        dsWinners.Tables[0].Rows.InsertAt(temp, index - 1);
        dsWinners.Tables[0].AcceptChanges();
        dataGridView1.DataSource = dsWinners.Tables[0];
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误,说"此行已经属于此表." 在这一行:

dsWinners.Tables[0].Rows.InsertAt(temp, index - 1);
Run Code Online (Sandbox Code Playgroud)

我知道我必须使用ImportRow(temp)而不是InsertAt(temp,index - 1),但问题是我不知道如何在正确的位置导入它.我已经看过这个了, 但正如那个回答这个问题的人所说的那样"它的草率和中途."

无论如何我能解决这个问题吗?如果是,我该怎么办?

Dre*_*ver 1

尝试以下操作:

var temp = dsWinners.Tables[0].Rows[index];         \\getting row
var newrow = dsWinners.Tables[0].NewRow();     \\ creating new row to insert
newrow.ItemArray = temp.ItemArray;            \\ copying data from old to new row
dsWinners.Tables[0].Rows[index].Delete(); \\deleting old row.
 dsWinners.Tables[0].Rows.InsertAt(newrow, index - 1); \\ adding new row.
Run Code Online (Sandbox Code Playgroud)