2011-12-08 14 views
2

私はページライフサイクルについて読んでいます。私はLifeCycleを理解していますが、何をすべきか、いつ行うのかは不明です。問題は、Page_Loadを使用してデータベース値を取得し、フォームフィールドを設定することです。私はボタンのonClickメソッドを使ってデータベースを更新します。しかし、フォームフィールドのテキストプロパティはPage_Loadの間に設定されていたので、実際にはOLD値でデータベースを更新するだけです。ASP.Net LifeCycleとデータベースアップデートの注文

Page_Load:データを収集し、データを反映するコントロールテキストプロパティを設定します。 Button_onClick:データベースをフォーム から更新します。問題:実際のフォームではなく、Page_Loadから収集した値を更新しています。

確かに、私はPage_Loadですべてを実行するはずがありません。では、このプロセスでどこが間違っていますか?

+1

Page_Loadを使用することを忘れないでください。初めてページにアクセスしたときに初めて初期値を読み込むようにしてください。 – AaronS

答えて

0

をPage_Load

あなたは、Page_Loadイベントで、データベースのデータをロードする場合は、行うには非常に最初の事はif (!IsPostBack)文の中でそれをラップすることです。

IsPostBackプロパティページが 最初にレンダリングされているか、ポストバックに応答してロードされているかどうかを示す値を取得します。

http://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback.aspx

のでIsPostBack = trueページサイクルがポストバックの結果であるとき。

Page Loadでは、すべてのページが読み込まれているわけではなく、IsPostBack = falseのときにのみデータを収集してください。フィールド

を設定

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     // gather your data here 
    } 
} 

私はpersonnaly PreRenderイベントハンドラの内容フィールドを設定することを好む(しかしhonnestly私はそれが/そこで行われなければならない必要があるかわからない、それだけに多くのロジックです私)。

PreRenderは、ポストバックイベントの後に実行されます(ボタンをクリックする、ドロップダウン選択を変更...)。これにより、ページのレンダリング前に更新や一般的にデータの変更が行われます。

+0

間違っています。まず最初に、ページ・ロード・イベントが必要かどうか、それとも使用できるかどうかを評価することです。また、IsPostBackを** brick **のコードに追加することは、多くの状況にあります。 –

+0

まあ、私は確かに専門家ではない。あなたはいくつかの記事/実例を教えてくれますか? –

+0

http://stackoverflow.com/questions/6384613/aspxgridview-performcallback-does-full-page-postback –