当使用FormView更新ObjectDataSource / Telerik RadPanelBar时,空参数

本文关键字:RadPanelBar 参数 Telerik FormView 更新 ObjectDataSource | 更新日期: 2023-09-27 17:50:31

问题:当通过FormView调用更新方法时,ObjectDataSource正在发送(基本上)空数据对象。只有在FormView的DataKeyNames属性中列出的字段才有值。

注意:我在FormView中使用Telerik RadPanelBars。

当我打破FormView的ItemUpdating事件,我看到:

    Keys列表有两个项,就像DataKeyNames属性一样。看起来不错。
  • OldValues和NewValues字典为空。里面什么都没有。不是字段名的空值-它们实际上是零项的空列表。

当我们到达ObjectDataSource的更新事件时,我们看到一个只有两个值的ProjectTask对象(与DataKeyNames字段匹配)-所有其他字段都是空的。

下面是我使用的更新方法:

    public static void UpdateProjectTask(ProjectTask projectTask)
    {
        var dc = new PrbDataContext();
        dc.ProjectTasks.Attach(projectTask, true);
        dc.SubmitChanges();
    }

下面是ObjectDataSource和FormView的标记:

    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="ProjectBilling.Business.Data.ProjectTask"
        SelectMethod="GetProjectTask" TypeName="ProjectBilling.Business.Data.ProjectTask" UpdateMethod="UpdateProjectTask" OldValuesParameterFormatString="original_{0}" OnUpdating="ObjectDataSource1_Updating">
        <SelectParameters>
            <asp:Parameter DefaultValue="0" Name="projectTaskId" Type="Int32" />
        </SelectParameters>
    </asp:ObjectDataSource>
    <asp:FormView ID="FormView1" runat="server" DataSourceID="ObjectDataSource1" DefaultMode="Edit"
        DataKeyNames="Id,Timestamp" OnItemUpdated="FormView1_ItemUpdated" Width="600px">

重要:我正在使用teleerik控件,它们需要奇数绑定。

    DataBinder.Eval(FormView1.DataItem, "TaskTemplateId")

我也尝试了这个方法,但没有产生任何更好的结果:

    ((ProjectBilling.Business.Data.ProjectTask)(Container.DataItem ?? new ProjectBilling.Business.Data.ProjectTask())).BillNarrative

控件正在检索数据。我只是不能更新它。

先生们,一如既往地感谢你们的帮助。

这个家伙似乎有一个类似的问题:无法获得FormView值从ObjectDataSource更新

当使用FormView更新ObjectDataSource / Telerik RadPanelBar时,空参数

Telerik的RadPanelBar不支持标记中的数据绑定。这就是导致OldValues和NewValues集合为空的原因。

注意:把这个问题留在这里,因为我花了很长时间才弄清楚这个问题,而且在互联网上关于它的信息很少。Telerik支持人员最终不得不承认数据绑定在RadPanelBar中不起作用。