8

ユーザーがページの 1 つで選択を行うと、RadAjaxManager を使用して RadComboBox コントロールを設定する Web アプリケーションがあります。これはほとんどの場合正しく機能しますが、約 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

それはすべて非常に単純なので、なぜこの問題が発生しているのか本当にわかりません。どんな助けでも大歓迎です。

4

2 に答える 2

0

FireBug (Net タブ) や Fiddler でリクエストとレスポンスのプロパティを確認してみましたか? これにより、rcmbMarket アイテムの選択された値 (つまり、データベース内の不正なデータ) で発生している場合、さらに洞察を得ることができます。また、ページが重すぎて投稿できないかどうかも確認してください。RadAjaxManager は ajax リクエストでもページ全体を投稿します。

于 2013-07-03T08:52:41.823 に答える
0

ApplicationFieldSource も Telerik Ajax で更新してみてください。

とにかく、このアプローチは非常にトリッキーです。今日では、RadAjaxManager/MS ASP.NET ajax よりもはるかに優れたクライアント サーバー テクノロジが数多くあります。たとえば、単純な Web サービスへの単純な jQuery 呼び出しです。

于 2013-03-07T09:49:44.927 に答える