2009-06-10 46 views
1

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

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

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

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

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

回答

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。我猜你可以通过更改字段生成器类来重写字段模板...但仍然可以。