2011-12-01 13 views
1
私はVS2005のC#とSQL Serverを使用しています

私は、GridViewコントロールを持っており、これが私の現在のUPDATE文である:ASP.NET更新のGridViewの文

UpdateCommand="UPDATE [UserData] SET [UserID] = @UserIDe, [Username] = @Username, [Age] = @Age, [MemberType][email protected] WHERE [UserID] = @UserID

上記のステートメントが更新されますユーザ行識別番号UserID。その特定のUserIDが存在しない可能性があるため、私は私のUserIDテーブルを更新している間に、行が更新されませんので、編集している場合

しかし、私は、変数UserIDが編集可能になりたいです。

編集した行のrow numberを特定することによって、UpdateCommandを使用して行を更新するにはどうすればよいですか?

答えて

1

これは、すべての元の値をトラッキングすることによって行うことができます。あなたのSQL文を生成するためのウィザードを使用する場合、Visual Studioがあなたのためにこれを行います、と

生成されたSQLの例here.を示すように、あなたはhereを見つけることができる「使用オプティミスティック同時実行」オプションを選択します。ページから

コードサンプル:

UPDATE Products SET 
    ProductName = @ProductName, 
    UnitPrice = @UnitPrice 
WHERE 
    ProductID = @original_ProductID AND 
    ProductName = @original_ProductName AND 
    UnitPrice = @original_UnitPrice 

記事を読んで、あなたがする必要性を回避できるようにする必要があり、元の値を使用して、自分の状況に、クエリの同じタイプを適用することができるはずです主キー。しかし、編集可能な識別キーを持つことは、それが一意であることを保証できないので、非常に悪い設計であることを指摘しておきます。 1つ以上のレコードの更新を非常に簡単に終了することができます。

1

GridViewの下には、レコードを更新するためにテーブルに少なくとも1つの一意のIDが必要です。 UserIDを編集する必要がある場合は、テーブルに固定キーが必要です。少なくともUserKeyという名前を付けてください。 GridViewは、その行へのポインタを持っている限り、データの編集と更新しかできないと思います。それ以外の場合は、UserKeyをDataKeyNamesコレクションから削除し、一意であり変更されないと考える列を割り当てます。

関連する問題