以下の要求を解決するための最善の行動を推薦する人がいます:.Net Repeaterは単一のオブジェクトに相当しますか?
私はRepeaterクラスをベースとして多数の拡張クラスを作成しており、柔軟性、使いやすさ、結果を愛しています。私が今したいことは、単一のオブジェクト(つまり、IListSourceまたはIEnumerableを実装していないDataSource)に対して同様のカスタムWebコントロールを作成することです。リピータを拡張し、オブジェクトを保持するために1項目のリストを使用してデータソースを設定し、次にデータバインディングを設定することで、私が達成しようとしている構造を作りました。
e.g a rough example:
Dim oObj as New MyObject(1)
Dim gl As New Generic.List(of MyObiect)()
gl.Add(oObj)
rpt.DataSource = gl
rpt.DataBind()
これは私が行うことができるようにしたいと思い何の事、周りの小さなハックのように思えるん以下の通りです:私は様々な変数でこのカスタムコントロールを定義することがしたい
e.g new call, where my control is the new custom control:
Dim oObj as New MyObject(1)
myControl.DataSource = oObj
myControl.DataBind()
とプロパティは、結果はそのレイアウトの以下のタイプを有効にします:
<My:ObjControl ID="frm" runat="server">
<Tabs>
<My:Tab name="Details">
<Items>
<My:Item Type="Text" Label="First Name" Property="FirstName" />
<My:Item Type="Text" Label="Last Name" Property="LastName" />
<My:Item Type="Text" Label="Title" Property="Title" />
</Items>
</Tab>
<My:Tab name="Address">
<Items>
<My:Item Type="Text" Label="Address 1" Property="Address1" />
<My:Item Type="Text" Label="Address 2" Property="Address2" />
<My:Item Type="Text" Label="Address 3" Property="Address3" />
</Items>
</Tab>
</Tabs>
</My:ObjControl>
この実装では、それは理想的なアプローチだろうMVCを使用してのように見えますが、Webフォームを使用して行われなければなりません上記を考慮して。これを行うことで、リフレクション(特定のインターフェイスを実装するすべてのクラスで使用可能)を使用する柔軟なWebControlを作成し、必要なフォームを生成することができます。
オブジェクトを受け取り、それに応じてデータソースを設定して時間を節約するカスタムリピータ(DataObject)にプロパティを追加するだけですか?それとも良い方法がありますか?
これはすべて意味があります。
乾杯、 スティーブ
わかりましたが、思考プロセスを乗り越えるのは非常に難しいですが、私のコントロールが達成するのは、2つのliタブ「詳細」と「アドレス」の間にタブとラベルとマッチングオブジェクトを更新できるフォーム要素。あなたが示したことは、その点を完全に見逃してしまいました。おそらく質問の言葉遣いに私のせいです。 もちろん、私はちょうどEval( "FirstName")とすることができます。 – stibstibstib
まだこれを行うには、いくつかのタブのために多くの作業をすると、リピーターをお勧めします。はい、私はあなたの質問を完全に理解していません。私はEvalを使用していません。DataBinder.Evalはそれを行う1.0の方法です。まだ変更する理由はありません。 –