1

再バインドしないと Gridview が EDIT モードのままになるのはなぜですか? しかし、グリッドビューが eidt モードを正常に終了するように再バインドすると、なぜですか?

コード:

protected void gvTest_EditCancel(Object sender, GridViewCancelEditEventArgs e) 
{
    gvTest.EditIndex = -1;
  //  connectToDb();
    Response.Write("<br/>"+ "Editing cancelled");
}`

public void connectToDb() 
{
    SqlConnection sqlcon = new SqlConnection(constrng);
    String com1 = "select * from login";
    SqlCommand sqlcom = new SqlCommand(com1, sqlcon);
    SqlDataAdapter sqlda = new SqlDataAdapter(sqlcom);
    DataSet ds = new DataSet();

    try
    {
        sqlcon.Open();
        sqlda.Fill(ds);
        gvTest.DataSource = ds;
        gvTest.DataBind();
    }
    catch (Exception exc)
    {
        Response.Write(exc.ToString());
    }
    finally
    {
        sqlcon.Close();
    }
}

しかし、 ConnectToDb() を呼び出して再バインドすると、編集モードから正常に存在します。再バインドは、編集または終了と何の関係がありますか?

4

1 に答える 1

0

編集モードであることをグリッドビューに伝えるのは EditIndex です。

編集する行のゼロから始まるインデックス。デフォルトは -1 で、行が編集されていないことを示します。

MSDN .

グリッドビューを編集すると、EditIndex は GridView RowIndex に設定されます。これは常に 0 または 0 より大きいため、GridView は編集モードのままになります。編集モードを終了するには、インデックスを -1 に設定する必要があります。編集をキャンセルすると、このインデックスは -1 に設定されます。

RowCancelingEdit では、editindex を -1 に設定できます。ただし、行を再バインドするまで、行は通常モードに変更されません。グリッドビューを再バインドすると、行がリセットされます (OnRowDataBound)。(しかし、それは EditIndex をリセットしません。私はこれについて間違っていました)。そのため、行の編集または削除を行うたびに、グリッドビューを再バインドする必要があります。

そう、

  1. 編集モードを終了するには、EditIndex = -1 に設定する必要があります
  2. EditIndex の変更は、GridView を再バインドするまで反映されません。
于 2013-10-11T21:32:59.617 に答える