2016-04-14 10 views
1

私は、データベースからデータをロードし、ロードされたデータに基づいていくつかのコントロールの有効な状態を更新する必要があるASP .NETコントロール(BlackbaudのNetCommunityシステム用)で作業しています。マイクロソフトのページライフサイクルに見られるものから、これを変更する適切な場所はPage_PreRenderCompleteイベント中ですが、これはうまくいかないようですので、間違っていると思います。しかし、実際のデータベース検索がどこで行われているのかわからないので、私は確かに分かりません。私はこのコントロール上に2つのドロップダウンを持っていて、下のグリッドにどのデータが表示されているかを判断し、グリッドは内部のデータに基づいて状態を変更する必要があります。データを早期にロードして状態を更新する方法を見つけ出す必要があるのですか?あるいは、アップデートを遅くしても適切にレンダリングできる場所がありますか?ASP .NETコントロールでデータがロードされるのはいつですか?

+0

は、これらのデータバインドされたコントロールはありますか? DataBoundイベントはどうですか? –

答えて

0

Page_PreRenderCompleteは、コントロールを操作するには遅すぎます。通常、PreRenderイベントを使用します。あなたはGridViewのの内側にあるボタンを操作したい場合は

しかし、あなたはにFindControlを使用してコントロールを見つけることが可能なGridViewのRowDataBoundイベントを使用します。例えば

protected void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e) 
{ 
    if(e.Row.RowType == DataControlRowType.DataRow) 
    { 
     var textbox = e.Row.FindControl("MyTextBox") as TextBox; 
    } 
} 
+0

コントロールから読み取る必要がありますか?私はデータセットから直接読み込んでいます。 –

+0

DataItemをDataRowViewにキャストすることで、残りのデータをRowDataBound内に取り込むことができます。 - DataRowView rowView =(DataRowView)e.Row.DataItem; var data = rowView ["MyColumnName"]。ToString(); ' – Win

関連する問題