当使用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更新
Telerik的RadPanelBar不支持标记中的数据绑定。这就是导致OldValues和NewValues集合为空的原因。
注意:把这个问题留在这里,因为我花了很长时间才弄清楚这个问题,而且在互联网上关于它的信息很少。Telerik支持人员最终不得不承认数据绑定在RadPanelBar中不起作用。