2017-02-14 19 views
1

私はid = txtPlaceとgridviewを持つTextBoxを持っています。ユーザーが行を選択した場合、テキストボックスに情報を入力して[保存]をクリックします。情報は、データベース(SQL)Gridviewで選択した行を更新するには?

protected void btnSave_Click(object sender, EventArgs e) 
 
    { 
 
     var id = GridView2.SelectedDataKey.Values[0].ToString(); 
 
     string constr = ConfigurationManager.ConnectionStrings["con"].ConnectionString; 
 
     using (SqlConnection conn = new SqlConnection(constr)) 
 
     { 
 

 
      string query = "UPDATE user SET place= @place where ID = @ID "; 
 
      SqlCommand cmd = new SqlCommand(query, conn); 
 
      cmd.Parameters.AddWithValue("@place", txtPlace.Text); 
 
      cmd.Parameters.AddWithValue("@ID", id); 
 

 
     } 
 
    }

で古いレコードを置き換える必要がありますが、それは動作しません。保存をクリックすると何も起こりません。

+2

の異なる見て、あなたは間違った変数名を入れていることを推測(); ' –

+0

SqlCommandを実行する例を参照してください。https://msdn.microsoft.com/en-us/library/fksx3b4f.aspx – KernelMode

+0

上記に加えて、テーブルデータ/データソースをリロードする必要もあります。 – Boldan

答えて

2

SqlConnectionを開いてSqlCommandを実行すると、いくつかの重要なステップが欠落しています。これは結果が返ってくることを期待していないものなので、ExecuteNonQuery()を使うことができます。 IDisposableなのでusingブロックにもSqlCommandを書き込む必要があります。変数には間違った名前が付けられています。

protected void btnSave_Click(object sender, EventArgs e) 
{ 
    var id = GridView2.SelectedDataKey.Values[0].ToString(); 
    string constr = ConfigurationManager.ConnectionStrings["con"].ConnectionString; 
    using (SqlConnection conn = new SqlConnection(constr)) 
    { 
     conn.Open(); // actually connect to the server 
     string query = "UPDATE user SET place= @place where ID = @ID "; // change @D to @ID 
     using (SqlCommand cmd = new SqlCommand(query, conn)) 
     { 
      cmd.Parameters.AddWithValue("@place", txtPlace.Text); 
      cmd.Parameters.AddWithValue("@ID", id); 
      cmd.ExecuteNonQuery(); // actually execute your statement 
     } 
    } 
} 
0
string query = "UPDATE user SET place= @place where ID = @D "; 

私は@Dあなたは接続をオープンしていないと、あなたは `cmd.ExecuteNonQueryを呼び出すことはありません@ID

関連する問題