[英]ASP.NET Dynamic user controls save data issue
这是我所拥有的
会话中驻留的一组业务实体(例如, Employee:{"Name":string,"Surname":string,"Salary":double, "Position":enum}
一组用户控件( using Telerik.Web.UI
),每个用户控件描述一个业务实体(例如EmployeeControl.ascx
:用于名称,姓氏和薪水的RadTextBoxes和用于位置的RadComboBox。控件中还有一个RadButton ,它将在控件客户端中输入的数据保存到某个实体,该实体在加载控件时已经知道)。
带有RadTabStrip
和RadMultiPage
页面,用于在不同的选项卡中呈现不同的控件
托管我们的Employee控件的目标RadTab
。
因此, 问题是:当我按下“ Save
按钮时,便完成了一个回发,从而清除了我的控件,并且仅在触发Click
事件之后。 我试图通过将RadAjaxManager与OnClientClicking
脚本一起使用来取消回发来避免这种情况,但是没有成功,因为回发仍然生成,尽管它的__EVENTTARGET
是RadAjaxManager
本身。
基本上就是这样:
用户选择带有Employee控件的选项卡。 该控件填充了Page_Load
上的初始数据。 (回传发生在重新创建控件时)
用户修改数据。 (什么也没有发生,没有控件会产生回发)
用户单击保存。 (在重新创建控件时发生回发,然后触发Click事件)
没有数据被保存
当再次输入数据并调用保存时,所有内容将按原样保存。
我如何才能使其正常工作?
PS我通过将回发分为奇数和偶数(我在Session
添加了另一个名为PostCounter的变量,每次递增)来实现所需的结果(尽管不完全:回发完成后屏幕“闪烁”)页面已发布)。 因此,当表达式PostCounter % 2
等于0时,我通过执行__doPostback
执行另一次回发,该事件的eventTarget参数是RadAjaxManagerProxy实例的ClientID
,而参数只是与该字符串中使用的任何字符串都不匹配的字符串我的常规Ajax请求。
重新创建控件时,请确保它们始终具有相同的ID。 不需要从其他控件模仿回发,按钮是IPostBack控件,因此一切正常。
对于Sharepoint,您需要以编程方式添加AJAX设置,这种(一种AJAX,一种完整的回发)行为是典型的: http : //www.telerik.com/forums/radajaxmanager-in-webpart-on-sharepoint-2010
另外,请确保不嵌套AJAX设置(来自管理器和/或代理),RadAjaxPanels和asp:UpdatePanels: http : //www.telerik.com/help/aspnet-ajax/ajax-controls-in-ajaxpanel-和-ajaxsettings.html 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.