我有一个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>
以下是启动和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子代码背后的代码:
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
这一切都非常简单,所以我真的不确定为什么我的这个问题正在发生。任何帮助都将不胜感激。
答案 0 :(得分:0)
尝试使用Telerik Ajax更新ApplicationFieldSource。
无论如何这种方法非常棘手,今天你有这么多客户端服务器 例如,技术远远优于RadAjaxManager / MS ASP.NET ajax 简单的jQuery调用简单的webservice。
答案 1 :(得分:0)
您是否尝试使用FireBug(Net标签)或Fiddler检查请求和响应属性?如果rcmbMarket项的一些选定值(即数据库中的一些不良数据)发生了这种情况,那么这可以提供更多的见解。另外,检查页面是否太重而无法发布。即使在ajax请求中,RadAjaxManager也会发布整页。