0

答えは技術的なものでなければなりません.グリッドビューやその他のコントロールを埋めて更新するコードは知っていますが、実際にはそれがどのように機能するのか正確にはわかりません.

GRID VIEWで行を変更して更新をクリックすると、データベースのデータも変更(更新)されます。アダプターはこれを行うと言う人もいますが、更新コード(OnRowUpdateイベント)でもSQ Lアダプターのオブジェクトがありません。 ?

Asp.net(C#)を使用しています。

例えば

protected void gvTest_RowUpdating(Object sender, GridViewUpdateEventArgs e) 
{
    int index = e.RowIndex;
    TextBox txtBoxName = (TextBox)gvTest.Rows[index].FindControl("txtboxTest");
    int pk = Convert.ToInt32(gvTest.DataKeys[index].Value);
    //Response.Write("Index_update="+ pk);

    SqlConnection sqlCon = new SqlConnection(constrng);
    SqlCommand sqlcomm = new SqlCommand("update login set name= @name where stid=@pk",sqlCon);
    sqlcomm.Parameters.AddWithValue("@name", SqlDbType.VarChar).Value = txtBoxName.Text;
    sqlcomm.Parameters.AddWithValue("@pk", SqlDbType.VarChar).Value = pk;

    try
    {
        sqlCon.Open();
        sqlcomm.ExecuteNonQuery();
        connectToDb();
        Response.Write("<br/>" + "UPDATE STATEMENT=DONE");

    }
    catch (Exception ex) 
    {
        Response.Write("<br/>"+ ex.Message);
    }
    finally
    {
        sqlCon.Close();
    }
4

1 に答える 1

1

コードはかなり単純に見えます。行が更新されると、RowUpdatingこのメソッドが処理するイベントがトリガーされます。この方法では...

UI で更新されている行から値を取得します。

int index = e.RowIndex;
TextBox txtBoxName = (TextBox)gvTest.Rows[index].FindControl("txtboxTest");
int pk = Convert.ToInt32(gvTest.DataKeys[index].Value);

SQL 接続とコマンドを定義してUPDATE、データベースでステートメントを実行します。

SqlConnection sqlCon = new SqlConnection(constrng);
SqlCommand sqlcomm = new SqlCommand("update login set name= @name where stid=@pk",sqlCon);
sqlcomm.Parameters.AddWithValue("@name", SqlDbType.VarChar).Value = txtBoxName.Text;
sqlcomm.Parameters.AddWithValue("@pk", SqlDbType.VarChar).Value = pk;

データベースに対して次のコマンドを実行します。

sqlCon.Open();
sqlcomm.ExecuteNonQuery();

さて、これらすべてを構造化するためのより良い方法があります。(もちろん、ほとんどの場合、何を行うにもより良い方法があります。) しかし、理想的なシナリオでは、このコードが何をしているのかはかなり明確です。

于 2013-10-11T17:21:48.060 に答える