2009-07-29 2 views
1

GridViewを(DataSourceID属性を介して)SqlDataSourceにバインドし、SelectCommand属性とUpdateCommand属性を設定すると、Page_Load()内でDataBind()が呼び出された場合、SqlDataSourceは更新を実行しません。

しかし、Page_Load()内で手動でDataBind()を手動で呼び出すと、SqlDataSource.UpdatingイベントとSqlDataSource.Updatedイベントが発生してもSqlDataSourceは更新を実行しないことに気付きましたGridViewの更新ボタンがクリックされます。

誰かが更新が行われない理由を説明できますか?

答えて

8

SqlDataSource.UpdatingイベントとSqlDataSource.Updatedイベントが発生する前にPage_Loadが発生しているからです。つまり、GridViewはユーザが編集する前の状態にリセットされます。

詳細については、Page Lifecycleのドキュメントを参照してください。 SqlDataSource.UpdatingイベントとSqlDataSource.Updatedイベントは、ポストバックイベント処理セクションで発生します。

+1

私はページのライフサイクルに精通していますが、DataBind()がすべてのGridViewの値をリセットすることに気づいていませんでした。とても有難い – SourceC

関連する問題