【问题标题】:ASP.NET Dynamic user controls save data issueASP.NET 动态用户控件保存数据问题
【发布时间】:2014-03-26 07:38:33
【问题描述】:

这就是我所拥有的

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

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

  3. 带有RadTabStripRadMultiPage的页面,用于在不同的标签中呈现不同的控件

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

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

基本上是这样的:

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

  2. 用户修改数据。 (什么都没有发生,没有控件生成回发)

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

  4. 未保存数据

  5. 当再次输入数据并调用 save 时,一切都按原样保存。

我怎样才能使它正常工作?

附:通过将回发分为奇数和偶数(我在Session 中添加了另一个名为 PostCounter 的变量,该变量每隔页面发布时间)。因此,当表达式 PostCounter % 2 等于 0 时,我通过执行 __doPostback 执行另一个回发,其 eventTarget 参数是 RadAjaxManagerProxy 实例的 ClientID,而参数只是一些不匹配的字符串在我的常规 Ajax 请求中使用。

【问题讨论】:

    标签: c# asp.net telerik


    【解决方案1】:

    确保您的控件在重新创建时始终具有相同的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      相关资源
      最近更新 更多