代码之家  ›  专栏  ›  技术社区  ›  Bob

如何用FormView手动修改绑定对象?

  •  0
  • Bob  · 技术社区  · 16 年前

    我正在将FormView与ObjectDatasource一起使用。单击“保存”按钮时,我希望在将数据绑定对象设置为ObjectDatasources更新方法之前对其进行修改。

    我尝试了FormView的更新事件和对象数据源的更新事件,但我不知道如何访问数据绑定对象。在这些事件中,FormView.DataItem为空。

    或者换句话说,我希望在将数据项传递给ObjectDatasource UpdateMethod之前截获并修改它。

    为了更详细地说明我为什么要这样做,表单上有一些值不能与内置功能进行数据绑定。其中一个控件是复选框列表。我正在使用数据绑定事件来填充检查,但现在我还需要一种方法来更新我的对象以反映表单值。还有其他类似情况的控件。

    4 回复  |  直到 13 年前
        1
  •  1
  •   Robert Harvey    16 年前

    为什么不编写自己的业务对象(即ObjectDatasource)并包装原始的ObjectDatasource对象呢?然后,您可以截取您想要的任何内容,并在将其修改为原始ObjectDataSource对象的保存方法的过程中对其进行修改。

        2
  •  4
  •   Lou Valentine    13 年前

    我知道这是一个老问题,但我也有同样的问题,我找到了我认为鲍勃正在寻找的答案。

    解决方案是在Web窗体上使用ObjectDataSource更新事件。更新事件将ObjectDatasourceMethodEventArgs对象作为参数。ObjectDatasourceMethodEventArgs类包含一个名为“inputParameters”的属性,您可以使用该属性访问数据对象并在更新发生之前修改内容。您需要先将inputParameters对象转换为orderedDictionary类型(完整命名空间为System.Collections.Specialized.orderedDictionary)

    看起来像这样:

    protected void myObjectDataSource_Updating(object sender, ObjectDataSourceMethodEventArgs e)
    {
        OrderedDictionary parameters = (OrderedDictionary)e.InputParameters;
        MyDataObject updatedData = (MyDataObject)parameters[0];
        DropDownList myDropDown = (DropDownList)FormView1.FindControl("myDropDown")
        updatedData.SomeDataValue = myDropDown.SelectedValue;
    }
    
        3
  •  1
  •   maxbeaudoin    16 年前

    只有在数据绑定时,数据项才可用。
    然后数据绑定到窗体视图内的控件。
    在更新之前,请使用myformview.findcontrol(字符串ID)访问绑定值。

    如果双向数据绑定对您不起作用,您应该声明对象,手动填充属性,然后更新或提交更改。

        4
  •  0
  •   Robert Harvey    16 年前

    由于您处于更新事件中,FormView.DataItem为空,因为尚未发生数据绑定。您必须通过包含感兴趣数据的表单控件访问数据。

    尝试在相关控件的OnDatabinding事件期间应用数据修改。

    推荐文章