这就是我所拥有的
驻留在会话中的一组业务实体(例如,Employee:{"Name":string,"Surname":string,"Salary":double, "Position":enum}
一组用户控件(using Telerik.Web.UI
),每个控件都描述一个业务实体(例如,EmployeeControl.ascx
:
名称,姓氏和薪水的RadTextBox和位置的RadComboBox。控件中还有一个RadButton,它将在控件客户端输入的数据保存到某个实体,该实体在加载控件时已经知道了。
包含RadTabStrip
和RadMultiPage
的网页,用于在不同标签中呈现不同的控件
托管我们员工控制权的目标RadTab
。
所以,问题是:当我点击Save
按钮时,回发已完成,从而清除我的控件,之后才会触发Click
事件。我试图通过使用带有OnClientClicking
脚本的RadAjaxManager取消回发来避免它,但没有成功,因为仍然会生成回发,尽管其__EVENTTARGET
本身就是RadAjaxManager
。 / p>
基本上,这就是:
用户选择带有Employee控件的选项卡。该控件填充了Page_Load
的初始数据。 (重新创建控件时会发生回发)
用户修改数据。 (没有任何反应,没有控制产生回发)
用户点击“保存”。 (重新创建控件时会发生回发,然后触发Click事件)
没有保存数据
再次输入数据并调用保存时,所有内容都会保存。
如何才能正常运作?
P.S。我能够实现所需的结果(虽然不完全:当回发完成时屏幕“闪烁”)将回发分为奇数和偶数(我在名为PostCounter的Session
中添加了另一个变量,这是每次发布页面时都会递增)。因此,当表达式PostCounter % 2
等于0时,我执行另一个回发,执行__doPostback
,其eventTarget参数是RadAjaxManagerProxy实例的ClientID
,参数只是一些与我的常规Ajax请求中使用的字符串不匹配的字符串。
答案 0 :(得分:0)
确保您的控件在重新创建时始终具有相同的ID。不应该需要模仿其他控件的回发,按钮是IPostBack控件,所以事情应该很好。
这个(一个AJAX,一个完整的回发)行为是Sharepoint的典型行为,您需要以编程方式添加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-and-ajaxsettings.html。