RadAjaxManager AJAX 请求失败的时间约为 10%

RadAjaxManager AJAX Request Fails Roughly 10% of the time

提问人:user1821393 提问时间:11/14/2012 最后编辑:Janak Nirmaluser1821393 更新时间:7/3/2013 访问量:868

问:

我有一个 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>

以下是 iniating 和 traget 组合框的标记:

<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 sub 的隐藏代码:

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

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

.NET Ajax vb.net Telerik

评论

0赞 Scott Selby 11/20/2012
如果您没有得到答案 - Telerik 非常乐意回复您
0赞 msigman 12/4/2012
您在使用 RadCompression 吗?如果是这样,我发现它有时会导致类似的问题。telerik.com/help/aspnet-ajax/compression.html
0赞 Dave Hogan 12/5/2012
是否可以包含有关环境的详细信息,例如 IIS 和 .NET 版本。

答:

0赞 Frano Hartman 3/7/2013 #1

尝试使用 Telerik Ajax 更新 ApplicationFieldSource。

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

0赞 gery128 7/3/2013 #2

您是否尝试过使用 FireBug(“网络”选项卡)或 Fiddler 检查请求和响应属性?如果它发生在 rcmbMarket 项目的某些选定值(即数据库中的一些错误数据)上,则可以提供更多的见解。另外,检查页面是否太重而无法发布。即使在 ajax 请求中,RadAjaxManager 也会发布整页。