ASP.NET动态用户控件可以保存数据问题

时间:2014-03-26 07:38:33

标签: c# asp.net telerik

这就是我所拥有的

  1. 驻留在会话中的一组业务实体(例如,Employee:{"Name":string,"Surname":string,"Salary":double, "Position":enum}

  2. 一组用户控件(using Telerik.Web.UI),每个控件都描述一个业务实体(例如,EmployeeControl.ascx: 名称,姓氏和薪水的RadTextBox和位置的RadComboBox。控件中还有一个RadButton,它将在控件客户端输入的数据保存到某个实体,该实体在加载控件时已经知道了。

  3. 包含RadTabStripRadMultiPage的网页,用于在不同标签中呈现不同的控件

  4. 托管我们员工控制权的目标RadTab

  5. 所以,问题是:当我点击Save按钮时,回发已完成,从而清除我的控件,之后才会触发Click事件。我试图通过使用带有OnClientClicking脚本的RadAjaxManager取消回发来避免它,但没有成功,因为仍然会生成回发,尽管其__EVENTTARGET本身就是RadAjaxManager。 / p>

    基本上,这就是:

    1. 用户选择带有Employee控件的选项卡。该控件填充了Page_Load的初始数据。 (重新创建控件时会发生回发)

    2. 用户修改数据。 (没有任何反应,没有控制产生回发)

    3. 用户点击“保存”。 (重新创建控件时会发生回发,然后触发Click事件)

    4. 没有保存数据

    5. 再次输入数据并调用保存时,所有内容都会保存。

    6. 如何才能正常运作?

      P.S。我能够实现所需的结果(虽然不完全:当回发完成时屏幕“闪烁”)将回发分为奇数和偶数(我在名为PostCounter的Session中添加了另一个变量,这是每次发布页面时都会递增)。因此,当表达式PostCounter % 2等于0时,我执行另一个回发,执行__doPostback,其eventTarget参数是RadAjaxManagerProxy实例的ClientID,参数只是一些与我的常规Ajax请求中使用的字符串不匹配的字符串。

1 个答案:

答案 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

相关问题