1

这是示例页面的格式:

*Validation Summary*

Label : [input]

Label : [input]

###############
# RadGrid     #
###############

###############
# RadGrid     #
###############

Label : [input]

[save button]

第一个版本:

  • 当我按下保存按钮时,整个页面会重新加载。验证摘要填充了错误(或不填充),错误的输入显示为红色。
  • 当我打开 RadGrid(自定义编辑模板)时,整个页面重新加载并且保存按钮被停用。
  • 问题:当我们打开一个网格时,整个页面被重新加载,它是呃......不是客户想要的......?

第二版:

  • 我们在 radgrids 周围放置了 radAjaxPanel,因此当您打开一个网格时,只有该网格会重新加载。问题:保存按钮不再被停用。
  • 如果我点击保存按钮,整个页面仍然会重新加载。

第三版:

  • 我们向保存按钮添加了一个 radAjaxPanel,并在打开或关闭 RadGrid 时添加了一行(见脚注)以重新加载此 radAjaxPanel
  • 现在按钮已正确激活/停用。
  • 问题:当我按下保存按钮时,只有按钮重新加载,如果某些字段有错误,它们不会变成红色。验证摘要仍然有效。

第 4 版:

  • 添加了一行(脚注)以在按下保存按钮时重新加载整个页面。
  • 现在错误的字段变为红色
  • 问题:这个额外的回发使验证摘要消失。

那么,关于如何让所有这些选项协同工作的任何想法?
最简单的方法是说服客户放弃 radAjaxPanel(因为我觉得我们无论如何都错误地使用了它们,而且它带来的优势很小)。

整个项目架构有些复杂(我们用 webforms模拟.net mvc(!)),我觉得代码只会给问题增加混乱,但如果您认为某些特定部分需要更多细节/代码,请随时询问.

MainRadAjaxPanel.ResponseScripts.Add(string.Format("$find('{0}').ajaxRequest();", MainRadAjaxPanel.ClientID));

4

1 回答 1

1

我建议使用RadAjaxManager控件而不是几个RadAjaxPanels. 这RadAjaxManager允许在哪些项目由哪些控件触发方面具有更大的灵活性。不幸的是,我无法就上述信息举出具体的例子,但希望这会让你指向正确的方向。你绝对可以做你想做的RadAjaxManager事情并让一切正常工作。请注意 AJAX 触发器和更新,即哪些控件触发 AJAX 更新(例如您的保存按钮)以及接收相应更新的内容(您的 ValidationSummary)。

http://www.telerik.com/help/aspnet-ajax/ajax-ajaxmanager.html

于 2013-05-06T16:27:40.063 回答