【问题标题】:RadAjaxManager AJAX Request Fails Roughly 10% of the timeRadAjaxManager AJAX 请求大约有 10% 的时间失败
【发布时间】:2012-11-02 02:41:58
【问题描述】:

我有一个 Web 应用程序,当用户在我的一个页面上进行选择时,它使用 RadAjaxManager 来填充 RadComboBox 控件。这在大多数情况下都能正常工作,但大约 10% 的时间 AJAX 调用似乎触发但没有值加载到目标 RadComboBox 中。如果浏览器关闭并再次访问该页面,则此行为似乎会继续,但几分钟后另一个浏览器刷新一切都会再次正常。

以下是发起 AJAX 请求的 RadComboBox 的 Ajax 设置:

<telerik:AjaxSetting AjaxControlID="rcmbMarket">
        <UpdatedControls>
            <telerik:AjaxUpdatedControl ControlID="rcmbApplicationField" 
                LoadingPanelID="RadAjaxLoadingPanel1" />
            <telerik:AjaxUpdatedControl ControlID="ApplicationFieldSource" 
                LoadingPanelID="RadAjaxLoadingPanel1" />
        </UpdatedControls>
    </telerik:AjaxSetting>

这是启动和跟踪组合框的标记:

<asp:TableRow HorizontalAlign="Center" ID="ProductRow3">
    <asp:TableCell Width="25%" HorizontalAlign="Left" ID="MarketLabelCell">
        <asp:Label ID="lblMarket" runat="server" Text="Market: "></asp:Label>
        <asp:RequiredFieldValidator ID="vldMarket" runat="server" ControlToValidate="rcmbMarket" 
            ErrorMessage="*" ForeColor="Red" SetFocusOnError="true" ValidationGroup="grpMain"></asp:RequiredFieldValidator>
    </asp:TableCell>
    <asp:TableCell Width="25%" HorizontalAlign="Left" ID="MarketDDLCell">
        <telerik:RadComboBox ID="rcmbMarket" runat="server" AllowCustomText="false" DataSourceID="MarketSource" AutoPostBack="true" CausesValidation="false"
            DataTextField="MarketDesc" DataValueField="pkMarketID" AppendDataBoundItems="true" OnSelectedIndexChanged="Market_Check">
            <Items>
                <telerik:RadComboBoxItem Text="" Value="" />
            </Items>
        </telerik:RadComboBox>
        <asp:SqlDataSource ID="MarketSource" runat="server" ConnectionString="<%$ ConnectionStrings:QuoteProdConn %>" SelectCommand="SELECT pkMarketID, MarketDesc FROM Data.Market WHERE Active = 'True' ORDER BY MarketDesc ASC"></asp:SqlDataSource>
    </asp:TableCell>
    <asp:TableCell Width="25%" HorizontalAlign="Left" ID="ApplicationLabelCell">
        <asp:Label ID="lblApplicationField" runat="server" Text="Application Field:"></asp:Label>
        <asp:RequiredFieldValidator ID="vldAppField" runat="server" ControlToValidate="rcmbApplicationField" 
            ErrorMessage="*" ForeColor="Red" SetFocusOnError="true" ValidationGroup="grpMain"></asp:RequiredFieldValidator>
    </asp:TableCell>
    <asp:TableCell Width="25%" HorizontalAlign="Left" ID="ApplicationTextCell">
        <telerik:RadComboBox ID="rcmbApplicationField" runat="server" AllowCustomText="false" DataSourceID="ApplicationFieldSource" ExpandDirection="Down"
            AutoPostBack="true" DataTextField="AppDescription" DataValueField="pkAppFieldID" AppendDataBoundItems="true" CausesValidation="false" MaxHeight="300px">
            <Items>
                <telerik:RadComboBoxItem Text="" Value="" />
            </Items>    
        </telerik:RadComboBox>
        <asp:SqlDataSource ID="ApplicationFieldSource" runat="server" ConnectionString="<%$ ConnectionStrings:QuoteProdConn %>"></asp:SqlDataSource>
    </asp:TableCell>
</asp:TableRow>

以下是市场组合框的选定索引更改时调用的 Market_Check 子代码:

Protected Sub Market_Check(ByVal sender As Object, ByVal e As System.EventArgs)

    Dim tmpItem As New Telerik.Web.UI.RadComboBoxItem("", "")
    ApplicationFieldSource.SelectCommand = "SELECT pkAppFieldID, AppDescription FROM Data.ApplicationField WHERE Active = 'True' AND fkMarketID = " & rcmbMarket.SelectedValue.ToString() & " ORDER BY AppDescription ASC "
    ApplicationFieldSource.DataBind()
    rcmbApplicationField.Items.Clear()
    rcmbApplicationField.Items.Add(tmpItem)
    rcmbApplicationField.DataBind()

End Sub

这一切都很简单,所以我真的不确定为什么会发生这个问题。任何帮助都将不胜感激。

【问题讨论】:

  • 如果您没有得到答复 - Telerik 非常乐意回复您
  • 您在使用 RadCompression 吗?如果是这样,我发现它有时会导致类似的问题。 telerik.com/help/aspnet-ajax/compression.html
  • 您能否提供有关您的环境的详细信息,例如 IIS 和 .NET 版本。

标签: .net ajax vb.net telerik


【解决方案1】:

尝试使用 Telerik Ajax 更新 ApplicationFieldSource。

反正这个方法很棘手,今天你有这么多客户端服务器 比 RadAjaxManager/MS ASP.NET ajax 好得多的技术,例如 对简单 Web 服务的简单 jQuery 调用。

【讨论】:

    【解决方案2】:

    您是否尝试使用 FireBug(Net 选项卡)或 Fiddler 检查请求和响应属性?如果 rcmbMarket 项目的某些选定值(即数据库中的一些错误数据)发生这种情况,这可以提供更多的洞察力。另外,请检查页面是否太重而无法发布。 RadAjaxManager 即使在 ajax 请求中也会发布整页。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-02
      • 2018-11-30
      • 2013-01-15
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多