1

次のコードがあります。

protected void BtnSave_Click(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dt = (DataTable)ViewState["CurrentData"];

    int id = Convert.ToInt32(Session["id"]);

    dt.Rows[index: id + 1][0] = TextBox1.Text;
    dt.Rows[index: id + 1][1] = TextBox2.Text;
    dt.Rows[index: id + 1][2] = TextBox3.Text;
    dt.Rows[index: id + 1][3] = TextBox4.Text;

    dt.AcceptChanges();
    GridView2.DataSource = dt;
    GridView2.DataBind();
    TextBox1.Text = "";
    TextBox2.Text = "";
    TextBox3.Text = "";
    TextBox4.Text = "";
    BtnCancle.Visible = false;
    BtnSave.Visible = false;
}

何らかの理由で、4 行目を編集すると、更新された変更が 2 行目に反映されます。

誰かが私が間違っていることを見ることができますか?

4

1 に答える 1

0

DataKeyNames を正しく設定してください。

キーがグリッド内の 1 つの行のみを一意に識別できることを確認してください。

を呼び出してAcceptChanges()います。これにより、データがファイナライズされます。並べ替えルールがある場合、データは並べ替えられます。変更を受け入れた後、行 4 は同じ位置にない場合があります。

于 2012-07-12T13:24:59.663 に答える