我在网页上使用 AJAX 组合框。该页面还使用了一个选项卡控件,其中包含大约 5 个不同的选项卡页面。组合框位于第一个选项卡上,位于 UpdatePanel 内。在其他标签页之一上,我有一个自定义日历控件,它也在 UpdatePanel 中。在我在第一个标签页上添加 AJAX 组合框之前,日历工作正常。将项目添加到日历时,它会设置为自动刷新其数据。
但是,现在当我将一个项目添加到日历时,刷新(这会导致日历的 UpdatePanel 的部分回发)只是挂起并且永远不会完成。数据存储在数据库中,但日历从不刷新。这似乎与第一个标签页上的 AJAX 组合框直接相关。我的事件日志中出现错误:
Exception information:
Exception type: FormatException
Exception message: Input string was not in a correct format.
Stack trace: at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.Convert.ToInt32(String value, IFormatProvider provider)
at AjaxControlToolkit.ComboBox.LoadPostData(String postDataKey, NameValueCollection postCollection)
at AjaxControlToolkit.ComboBox.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection)
at System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
有没有人以前见过这个或知道如何解决?我不希望组合框尝试重新加载数据,因为它与日历不在同一个 UpdatePanel 中(它有自己的 UpdatePanel),因为它应该只进行部分回发。
我是不是漏掉了什么?请帮忙! 谢谢
请您参考如下方法:
我在这里可以怀疑的是,您没有设置包含 ComboBox 的更新面板的 UpdateMode 属性,因此每次更新日历更新面板时它都会更新,因为默认情况下 UpdateMode 的值为“Always”。
所以在我看来你必须像这样设置你的 ComboBox 更新面板属性
UpdateMode="Conditional"
然后你必须根据你的要求做两件事中的任何一件
设置更新面板的属性
ChildrenAsTriggers="true"
在所有处理后从您的代码中显式调用更新面板的“更新”方法。
Tab1UpdatePanel.Update();
