1

ASP.NET 動的データ機能を使用して、少し奇妙なことをしています。つまり、フィールドの動的リストをメイン オブジェクトの子として作成します。

だから基本的に私はTicket.Fieldsを持っています。メイン ページには Ticket のすべてのフィールドが一覧表示され、Fields プロパティには、より多くのデータを収集するためのコントロールのリストを生成する DynamicControl があります。

トリッキーな部分は、このリストも動的データを使用してコントロールを生成するため、各フィールドは定義済みの FieldTemplates のいずれかになる可能性があることです...つまり、値を取得しようとしたときに実際のデータ コントロールがどうなるかは必ずしもわかりません。 .

では、DynamicControl の値を取得するにはどうすればよいでしょうか。

値を取得する手段を提供する FieldTemplate の新しいサブクラスを作成する必要がありますか?

4

1 に答える 1

0

ぐっすり眠ることができることは驚くべきことです。

さて、それと FieldTemplate を拡張して、データ コントロールが既に公開されていることを認識するだけです...

foreach (ListViewDataItem i in lvFields.Items)
    {         
        var val = i.FindDynamicControlRecursive("ValueText") as DynamicControl;
        var ft = val.FindFieldTemplate("ValueText") as FieldTemplateUserControl;

        ParseControl(ft.DataControl)
    } 

ParseControl はここで作成されますが、実際には、その部分を処理できるクラスが用意されています...したがって、将来の読者が少なくともここでアイデアを得ることができれば幸いです。

重要なのは、FindFieldTemplate の結果を FieldTemplateUserControl にキャストすることです。何らかの理由で、FieldTemplateUserControls のみを返すことができるように見えるにもかかわらず、Control を返すだけです。フィールドジェネレータークラスを変更することで、フィールドテンプレートをオーバーライドできると思いますが、それでも.

于 2009-06-11T14:09:56.067 に答える