2012-11-13 31 views
8

Tôi có một ứng dụng web sử dụng RadAjaxManager để điền các điều khiển RadComboBox khi người dùng thực hiện lựa chọn trên một trong các trang của tôi. Điều này hoạt động chính xác hầu hết thời gian tuy nhiên khoảng 10% thời gian cuộc gọi AJAX dường như cháy nhưng không có giá trị được nạp vào RadComboBox mục tiêu. Nếu trình duyệt được đóng lại và trang được truy cập lại, hành vi này có vẻ vẫn tiếp tục nhưng sau một vài phút và một trình duyệt khác làm mới mọi thứ hoạt động tốt một lần nữa.RadAjaxManager Yêu cầu AJAX không đúng 10% thời gian

Dưới đây là các thiết lập Ajax cho RadComboBox khởi xướng yêu cầu AJAX:

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

Dưới đây là đánh dấu cho các khởi xướng và traget kết hợp hộp:

<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> 

Dưới đây là đoạn code sau cho Market_Check sub được gọi khi chỉ mục đã chọn của hộp combo market được thay đổi:

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 

Đó là tất cả khá đơn giản vì vậy tôi thực sự không chắc chắn lý do tại sao vấn đề này của tôi đang xảy ra. Bất kì sự giúp đỡ nào cũng được hoan nghênh.

+0

Nếu bạn không nhận được câu trả lời - Telerik rất tốt về việc quay lại với bạn –

+0

Bạn đang sử dụng tính năng RadCompression? Nếu vậy, tôi đã tìm thấy nó đôi khi có thể gây ra các vấn đề tương tự. http://www.telerik.com/help/aspnet-ajax/compression.html – msigman

+0

Bạn có thể đưa các chi tiết về môi trường của mình như phiên bản IIS và .NET không. – DaveHogan

Trả lời

0

Cố gắng cập nhật ApplicationFieldSource bằng Telerik Ajax.

Dù sao phương pháp này là rất phức tạp, hôm nay bạn có rất nhiều máy chủ khách hàng công nghệ tốt hơn nhiều so với RadAjaxManager/MS ASP.NET ajax, ví dụ: lời gọi jQuery đơn giản tới dịch vụ web đơn giản.

0

Bạn đã thử kiểm tra thuộc tính yêu cầu và phản hồi bằng FireBug (tab Net) hoặc Fiddler? Điều đó có thể cung cấp một số thông tin chi tiết hơn nếu nó đang xảy ra với một số giá trị được chọn của các mục rcmbMarket (tức là một số dữ liệu xấu trong cơ sở dữ liệu). Ngoài ra, hãy kiểm tra xem trang có quá nặng để đăng không. RadAjaxManager đăng toàn bộ trang ngay cả trong yêu cầu ajax.

Các vấn đề liên quan