1

私の現在のタスクは、データオブジェクトのコンテンツを表示するASP.NETページです。そのオブジェクトのプロパティの1つは、名前付きリストのリストです。不透明にするために、これをaと呼びましょうCompany。これには、名前付きの場所のリストがあり、各場所は(のみ)従業員のリストに関連付けられています。

重要な場合Companyは、このプロパティを次のように実装しますか?

IDictionary<string, IList<Employee>> mEmployeesByLocation;

これらのリストはそれぞれ、非常に簡単に表示できますGridView.。私が欲しいのは、すべてをに入れて、各グリッドをTabContainer個別に含めることです。TabPanelタブとグリッドは互いに同一であり、各タブの名前は関連する辞書キーになります。

これを行う良い方法はありますか?

私が最初に考えたのは、を使用するRepeaterことでしたが、中に入れることはできませんTabContainer。パーサーはそこで何をすべきかわかりません。

したがって、プログラムでタブを作成する必要があるようです。けっこうだ。可能であれば、個々のグリッドコントロールを作成し、それらのすべてのプロパティをプログラムで割り当てる必要はありません。

私が得た提案の1つは、サブクラスTabPanel化してユーザーコントロールのように機能GridViewさせ、データバインディングを渡す方法を知っていることです。しかし、それをどうやって行うのか、あるいはそれがうまくいくかどうかはわかりません。TabPanelコントロールをサブクラス化する方法は知っていますが、ユーザーコントロールのように、のように動作し、コントロールを含めることができるとは思いません。

考え?入力?より良いアイデア?

4

2 に答える 2

0

このコントロールの組み込みサポートはありません。これはサードパーティのコントロールにありますが、AJAX コントロール ツールキットにはありません。タブをプログラムでロードする必要があり、グリッドがほぼ同じである場合は、グリッドを持つユーザー コントロールを使用します ( http://aspalliance.com/565_Dynamic_Loading_of_ASPNET_User_Controlsのように LoadControl メソッドを使用してユーザー コントロールをロードできます)。

そうすれば、プログラムで UI を作成できます。おそらく、ページを読み込むたびに UI を再作成する必要があることに注意する必要があります (詳細はこちら: http://www.asp.net/(S(wnmvzu45umnszm455c1qs522))/learn/ajax-videos/video-286 .aspx )。動的コントロールは、ページのポストバック間で保持されません。タブが保持されるかどうかはわかりません。

HTH。

于 2010-02-09T17:48:08.850 に答える
0

のバグにより、このアイデア全体が破棄されてしまいましたTabContainer。私が使用しているツールキットのバージョンでは、コントロールはポストバック間で動的に作成されたタブを適切に処理できません。

問題はプロパティにあるようLoadControlStateですActiveTabIndex。状態が読み込まれると、コンテナは単純にタブ インデックスを以前の状態に設定しようとします。の時点では動的タブはまだ作成されていないためLoadControlState、読み込まれたインデックスは無効である可能性があります。この場合、プロパティは anArgumentOutOfRangeExceptionをスローし、それを含むページが爆発します。

(私は部分的な回避策を見つけましたが、それLoadControlStateはまったく機能しなくなり、煩わしくて面倒になりました。)

複雑なオフィス ポリシー上の理由により、AjaxControlToolkit のバージョンをアップグレードまたは変更してはなりませんが、このエラーが発生した他の人にとっては、昨年 6 月の時点で修正されたようです:
http://www.codeplex.com/AjaxControlToolkit/WorkItem/View .aspx?WorkItemId=15658

于 2010-02-12T19:40:42.400 に答える