4

を使用して、.net アプリケーションに GridView 行編集機能を実装し<asp:CommandFieldました。行を編集した後、[更新] ボタンをクリックしてレコードを保存しました。ページを更新するか、F5 を押すと、GridView_RowCommand が再度発生しました。

これを回避するにはどうすればよいですか。ユーザーが F5 キーを押したとき、またはページを更新したときを識別するメカニズムはありますか。クライアント側またはサーバー側に何らかの方法がありますか。

4

3 に答える 3

5

あなたの問題に対する最良の「技術的」解決策ではResponse.Redirect(Request.RawUrl)ありませんが、RowCommandで必要なことをすべて完了したら、いつでも実行できます

私が言ったように、それは最善の「技術的」解決策ではありませんが、解決策です

デイブ

于 2011-02-09T12:42:53.813 に答える
1
Session["LastInsertedItem"] = null;
MyCustomObjType myCustomObject;
protected void Page_Load(object sender, EventArgs e)
{
    myCustomObject = Session["LastInsertedItem"] as MyCustomObjType;
}
void GridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    If(myCustomObject == null || //!(compare your value with myCustomObject.field) )
    {
         // do your operations and save the values to myCustomObject and save that object back to Session.
    }
    else
    {
        // It is refreshed or same data is being insterted - don't know if second         option is possible in your case.
    }
}
于 2011-01-28T12:18:10.220 に答える
1

これをキャプチャする 1 つの方法は、問題のページに関連するセッション変数を維持することです。セッション変数では、最後に実行されたアクションを決定するある種の状態列挙、キー、または文字列を保持します。単純なインクリメント カウンターを使用することもできます。セッション変数と等しいポストバック カウンターを受け取った場合は、新しいアクションではなくページの更新を示します。

于 2011-01-28T12:30:21.820 に答える