Skip to main content
 首页 » 编程设计

c#之AJAX 组合框问题

2024年01月02日38mfryf

我在网页上使用 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" 

然后你必须根据你的要求做两件事中的任何一件

  1. 设置更新面板的属性

    ChildrenAsTriggers="true"

  2. 在所有处理后从您的代码中显式调用更新面板的“更新”方法。

    Tab1UpdatePanel.Update();