动态生成数据绑定的FormView字段

本文关键字:FormView 字段 数据绑定 动态 | 更新日期: 2023-09-27 18:02:26

我有一个现有的ASP。一个webform应用程序,其中包含FormView控件,用于在域对象上执行CRUD操作。新的需求将一些动态内容添加到需要在FormView中反映的域对象中。这意味着我需要基于绑定对象动态生成这些控件。

我使用ObjectDataSource的FormView,返回域对象绑定。域对象现在将具有一个属性,该属性返回一组Section对象,每个Section包含一个问题列表。在我的表单中间,我需要显示每个部分的问题列表和一个允许用户输入答案的文本框。

我能够生成UI的许多不同的方式,但我还没有找到一种方式,包括动态字段的数据,当页面被发布回来。因为我不会知道'模式',直到FormView是数据绑定,我想知道如果我太迟在管道回发数据妥善处理。

我生成这些字段的最佳方法是什么,以便正确地发布数据?

我仍在寻找完成这项任务的最佳方法,但我已经找到了一个至少有效的解决方案。简而言之,我在FormView的DataBound事件处理程序中创建动态内容,因为这是管道中的第一个地方,我总是可以获得对FormView控件的引用。然后我按照穆罕默德的建议,把价值观从请求中拉出来。Form集合,并将它们放入FormView的iteminsert和ItemUpdating处理程序中的EventArgs对象中。

这不是那么直接,因为每个控件必须有一个唯一的ID,然后我可以使用它来定位值-这不是那么糟糕。但是,我必须在数据源中实现自定义逻辑,然后将这些值映射到数据绑定对象。

总的来说,还不错,但肯定不是我想在其他解决方案中复制的东西,所以我希望还有更好的方法。

动态生成数据绑定的FormView字段

当你想从动态生成的字段中获取值时,你应该从Request.Form集合中获取它,并将它传递给FormView的ItemInserting事件。例如

 protected void frmAsset_ItemInserting(object sender, FormViewInsertEventArgs e)
 {
   e.Values["FieldName"] =    Request.Form[ControlClientID];
 }

请注意,您的控件应该在回发时重新创建以获取值