如何获得DynamicControl的值?

时间:2009-06-10 20:10:20

标签: asp.net-3.5 dynamic-data asp.net-dynamic-data

我正在使用ASP.NET动态数据功能做一些有点奇怪的事情。即,创建一个动态的字段列表作为主对象的子项。

所以基本上我有Ticket.Fields。主页面列出了Ticket的所有字段,Fields属性有一个DynamicControl,它生成一个控件列表以收集更多数据。

棘手的部分是此列表还使用动态数据生成控件,因此每个字段可以是任何已定义的FieldTemplates ...这意味着当我尝试时,我不一定知道实际的数据控件是什么得到价值。

那么,我如何获得DynamicControl的值?

我是否需要创建FieldTemplate的新子类,以提供获取值的方法?

1 个答案:

答案 0 :(得分: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。我想你可以通过更改字段生成器类来覆盖哪些字段模板......但仍然。