2009-06-09 16 views
2

データバインドされたFormView内にTabContainerがあります(ex:クライアントのバイオデータ、病歴、財務情報などのカテゴリ別に情報を表示する)。フォームビューの更新と挿入が機能しない(データベースにNULL値をポストする) - FormViewがタブコンテナのタブパネル内のTextBoxを見つけることができないようだ。フォームビュー内のAJAX Tabcontainer値が挿入されない

フォーラムのいくつかは、それが原因で「INamingContainer」の(デザインによって)タブコンテナの実装のだ、とハックは、タブコンテナの ソースコード(AjaxのCTLツールキットのソースコード)の制御を取ると「INamingContainerを削除することであると言います"それからインターフェイス...私の味に複雑すぎる..私はちょっと失われています。

これを修正するには、まっすぐ前方に、より良い方法がありますか?私は、ツールキットがこの基本的な機能性を実装するのに失敗したことを知り驚いています。ほとんどの開発者向けの注文情報(タブコントロール)は、formviewでよく見られます。事前に

おかげで、私自身のスレッドに答える Jeewai

答えて

2

...私はいくつかの素晴らしい内部のasp.netのフォーラムからを持って、ここに解決策を投稿することを決めた:私を助けた説明を再現:

これは、同じ問題が発生する可能性のある他のユーザーにいくつかの質問をクリアします。

ベスト、 JY

BLOCKQUOTE こんにちはJY、

短い答えは、バインドステートメントがコンパイルされたときに、いくつかの制限が挿入/更新のための値を抽出するにはあるということです。 FormView内のコントロールが別の命名コンテナ(TabContainerとTabPanelが両方ともネーミングコンテナ)内にある場合、コンパイラはTextBoxから値を抽出する方法を解決できません。私はhttp://www.aarongoldenthal.com/post/2009/03/15/ASPNET-Databinding-Bind()-Method-Dissected.aspxに私のブログでこれに関するより詳細な議論を持っています。

これを回避するには、あなたは、手動のようなものが値を抽出する必要があります:

保護無効FormView1_ItemUpdating(オブジェクト送信者、FormViewUpdateEventArgs E) { //はコントロール のTextBox LastNameTextBoxへの参照を取得します= FormControl( "TabContainer1")。FindControl( "TabPanel1")。FindControl( "LastNameTextBox")をTextBoxとして使用します。

// Set update parameters in datasource 
ObjectDataSource1.UpdateParameters["LastName"].DefaultValue = LastNameTextBox.Text; 

}

にFindControlは、現在の名前付けコンテナを検索しているので、あなたは、テキストボックスに取得するには、各名前付けコンテナ(FormViewコントロール、タブコンテナ、およびタブパネル)を介して掘る必要があります。

希望に役立ちます。

アーロン

BLOCKQUOTE

関連する問題