2011-12-06 22 views
2

私はFormViewを使用してデータベースから企業を選択しています。このFormViewObjectDataSourceに結合され、これはDropDownListに結合される。ユーザーがDropDownListから会社を選択すると、FormViewには会社に関する情報が入力されます(AutoPostBackDropDownListで有効になり、動的レコードの変更が可能になります)。私のFormViewは、挿入、更新、削除の各機能をサポートしています。編集後にFormViewをどのように更新できますか?

問題は次のとおりです。FormViewのレコードを編集した後、レコードは正常に変更されますが、画面から完全に削除されます。私がDropDownListから新しい会社を選択した後で初めて、FormViewに記録が再表示されます。

ここで問題になる可能性のある人はいますか?

答えて

1

親コントロールが変更されたときに、子コントロールをデータバインドするようトリガーする必要があります。

これを行うための最も信頼できる場所は、親コントロールのDataBoundイベントにあることがわかりました。編集が成功した後、コントロールが編集されたデータに再バインドする必要があるため、このイベントが呼び出されます。

私が似たようなことをしている現実のコードからの抜粋です。その中にQuestionResultsというコントロール内に子レコードを持つQuestionGroupResutlsというコントロールがあります。

void QuestionGroupResults_DataBound(object sender, EventArgs e) 
{ 
    QuestionGroupsEditingDetailsView1.DataBind(); 
    QuestionResults.DataBind(); 

} 

これはPage_Loadにありますが、これはasmx(これはコードサンプルがありません)で宣言的に指定できます。

QuestionGroupResults.DataBound += new EventHandler(QuestionGroupResults_DataBound); 

あなたのコントロールの名前はわかりませんが、あなたも同じことをすることができます。

4

再度データバインドする必要があります。

void FormView_ItemInserted(Object sender, FormViewInsertedEventArgs e) 
{ 
    Gridview.Databind(); 
} 
+0

+1。私と同じアプローチで、別のイベントに出くわす。この方法に進むと、更新済みイベントと削除済みイベントも処理する必要がありますが、正常に機能します。 – David

+0

あなたの右 - OPも更新と削除を処理する必要があります。また、挿入/更新/削除が成功したことを確認するチェックを実行することをお勧めします –

関連する問題