ユーザーの好みに応じてデータセットのレコードを並べ替えようとしています。選択したレコードを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];
}
}
しかし、「この行はすでにこのテーブルに属しています」というエラーが表示されます。この行で:
dsWinners.Tables[0].Rows.InsertAt(temp, index - 1);
InsertAt(temp、index-1)の代わりにImportRow(temp)を使用する必要があることはわかっていますが、問題は、正しい位置にインポートする方法がわからないことです。私はにint型を見ているTHIS質問に答え男が言うとしてではなく、「そのずさんなと半。」
とにかく私はこの問題を克服することができますか?はいの場合、どうすればそれを行うことができますか?
以下のことを試してください:
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.
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加