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。出于某种原因,它只返回 Control,即使它看起来应该只能返回 FieldTemplateUserControls。我想您可以通过更改字段生成器类来覆盖什么字段模板......但仍然如此。

于 2009-06-11T14:09:56.067 回答