2011-01-04 23 views
0

RowUpdatingイベントを使用してグリッドビュー(.net 3.5)の列の値を変更しようとしています。 イベントが発生し、新しい値を設定しましたが、テーブルは更新されません。GridView RowUpdatingは列の値を変更できません

<asp:GridView ID="GridViewHotels" runat="server" AllowSorting="True" 
     AutoGenerateColumns="False" DataSourceID="SqlDataSourceHotels" 
     OnRowUpdating="GridViewHotels_RowUpdating"> 

...

<asp:BoundField DataField="lat" HeaderText="lat" SortExpression="lat" /> 

...

<asp:SqlDataSource ID="SqlDataSourceHotels" runat="server" 
       UpdateCommand="UPDATE [hotels] SET ... [lat] = @lat .... WHERE [id] = @id"> 

これは、イベントコード(と呼ばれている)である。

protected void GridViewHotels_RowUpdating(Object sender, 
GridViewUpdateEventArgs e) 
    { 
     e.NewValues["lat"] = "xxx"; 
    } 

そして、まだ、 " 「ラテラル」フィールドは更新されません

答えて

0

グリッドデータソースにはどのようなものがありますか? ViewStateなどで保持しているデータセットの場合は、AcceptChangesを呼び出してデータを再バインドする必要があります。基礎となるデータがデータベース内にある場合は、データソースからグリッドを再バインドするだけです(更新後)。つまり、データソースが何であれSQL Serverからリフレッシュします。

+0

データベースにバインドされています。 GridViewHotels.DataBind()を呼び出します。値を設定した後、それは? – Ranch

+0

データベースにバインドされている場合は、バインドするデータを正しい方法で取得するメソッドが必要ですか?基本的には、最初にグリッドに入力するのと同じ呼び出しを実行する必要があります。また、新しい値を保存するときにも、その変更をデータベースに保存する必要があります。フィールド値を設定するだけでは機能しません。 – kd7

+0

更新は、SqlDataSourceで設定されたUpdateCommandコマンドで自動的に行われます。 この更新コマンドを自分のコードに設定する必要がありますか? (SqlDataSourceHotels.UpdateCommand = "UPDATE ..."のようなもの) – Ranch

0

SQLDataSourceに接続文字列が必要だと思います。

+0

牧場、デザインモードでSQLDataSourceを選択し、 'データソースの設定'を選択し、何かに接続しているかどうかを確認します。もしそうでなければ、それはあなたが取り組むべき最初のものです。 – nycdan

+0

申し訳ありませんが部分的なコードを投稿していますが、接続文字列があります。私はコード内の値を変更することができないという事実を除いて、ページは完全に動作しています。 – Ranch

関連する問題