какова правильная конфигурация RadAjaxManager - эта проблема связана с UpdatePanel!

Сначала посмотрите на приведенный ниже aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4.aspx.cs" Inherits="Amlak.WebForm4" %>

<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
            <AjaxSettings>
                <telerik:AjaxSetting AjaxControlID="RadComboBox1">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="CheckBox1" UpdatePanelRenderMode="Inline" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </AjaxSettings>
        </telerik:RadAjaxManager>
        <telerik:RadComboBox ID="RadComboBox1" runat="server" AutoPostBack="True" AppendDataBoundItems="True"
            OnSelectedIndexChanged="RadComboBox1_SelectedIndexChanged">
            <Items>
                <telerik:RadComboBoxItem runat="server" Text="1" Value="1" />
                <telerik:RadComboBoxItem runat="server" Text="2" Value="2" />
                <telerik:RadComboBoxItem runat="server" Text="3" Value="3" />
                <telerik:RadComboBoxItem runat="server" Text="4" Value="4" />
            </Items>
        </telerik:RadComboBox>
        <br />
        <br />
        <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" OnCheckedChanged="CheckBox1_CheckedChanged"
            Text="Check Me" TextAlign="Left" />
        <br />
        <br />
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    </div>
    </form>
</body>
</html>

Мой код выглядит следующим образом:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Amlak
{
    public partial class WebForm4 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void RadComboBox1_SelectedIndexChanged(object sender, Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs e)
        {
            if (RadComboBox1.SelectedItem.Value == "2")
            {
                CheckBox1.Checked = true;
            }
            else
            {
                CheckBox1.Checked = false;
            }

        }

        protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (CheckBox1.Checked)
            {
                TextBox1.Text = "text";
            }
            else
            {
                TextBox1.Text = "";
            }
        }
    }
}

Мои цели:

  1. Я хочу заставить RadComboBox1 работать в режиме AJAX и изменить CheckBox1.Checked по определенным условиям в коде позади. -> не нужна обратная передача для этого.

  2. Я хочу заставить CheckBox1 работать в режиме PostBack и изменить TextBox1.text по определенным условиям в коде позади. -> Мне нужна обратная передача для этого.

В этом сценарии -> RadComboBox1 работает нормально
но я не знаю, почему OnCheckedChanged="CheckBox1_CheckedChanged" не срабатывает, когда мы меняем проверку CheckBox1! (потому что мы добавили его как обновление RadComboBox1 в RadAjaxManager1).


Мои вопросы:

Должен ли я добавлять RadComboBox1 как обновление RadComboBox1 или нет? Однако он отлично работает без добавления этого.

Если мы добавим ChechBox1 к RadAjaxManager1, как показано ниже:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4.aspx.cs" Inherits="Amlak.WebForm4" %>

<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
            <AjaxSettings>
                <telerik:AjaxSetting AjaxControlID="RadComboBox1">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="CheckBox1" UpdatePanelRenderMode="Inline" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
                <telerik:AjaxSetting AjaxControlID="CheckBox1">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="TextBox1" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </AjaxSettings>
        </telerik:RadAjaxManager>
        <telerik:RadComboBox ID="RadComboBox1" runat="server" AutoPostBack="True" AppendDataBoundItems="True"
            OnSelectedIndexChanged="RadComboBox1_SelectedIndexChanged">
            <Items>
                <telerik:RadComboBoxItem runat="server" Text="1" Value="1" />
                <telerik:RadComboBoxItem runat="server" Text="2" Value="2" />
                <telerik:RadComboBoxItem runat="server" Text="3" Value="3" />
                <telerik:RadComboBoxItem runat="server" Text="4" Value="4" />
            </Items>
        </telerik:RadComboBox>
        <br />
        <br />
        <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" OnCheckedChanged="CheckBox1_CheckedChanged"
            Text="Check Me" TextAlign="Left" />
        <br />
        <br />
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    </div>
    </form>
</body>
</html>

Так что в режиме AJAX все работает нормально, но я хочу заставить CheckBox1 работать в режиме PostBack!
Как решить эту проблему?

Должен ли я добавить TextBox1 в качестве обновления RadComboBox1 в RadAjaxManager или нет?

Спасибо за внимание к моему вопросу. наилучшие пожелания


person SilverLight    schedule 27.04.2010    source источник
comment
У меня есть 2 вопроса от менеджера в этом сообществе: 1-есть ли здесь кто-нибудь / 2-почему уведомление по электронной почте не работает для меня (я установил флажок уведомления)? (где я могу задать такие вопросы в этом сообществе?)   -  person SilverLight    schedule 16.05.2011


Ответы (2)


Текущие ограничения RadAjax говорит:

Параметр RadAjaxManager не будет использовать ajax для кнопки... ...если нет обновленных элементов управления

Итак, вам, вероятно, придется сделать что-то вроде:

<UpdatedControls>
               <telerik:AjaxUpdatedControl ControlID="ChechBox1" />
</UpdatedControls>
person KMån    schedule 27.04.2010

Вы можете воспользоваться OnRequestStart даже RadAjaxManager, чтобы отключить функциональность Ajax для определенных запросов. Вот обновленная версия вашего кода, которая работает так, как вы просили:

<div>
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="RadComboBox1">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl
                        ControlID="CheckBox1"
                        UpdatePanelRenderMode="Inline" />
                    <telerik:AjaxUpdatedControl
                        ControlID="TextBox1"
                        UpdatePanelRenderMode="Inline" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="CheckBox1">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl
                        ControlID="TextBox1"
                        UpdatePanelRenderMode="Inline" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
        <ClientEvents OnRequestStart="onAjaxRequestStart" />
    </telerik:RadAjaxManager>

    <telerik:RadComboBox ID="RadComboBox1" runat="server"
        AutoPostBack="True"
        AppendDataBoundItems="True"
        OnSelectedIndexChanged="RadComboBox1_SelectedIndexChanged">
        <Items>
            <telerik:RadComboBoxItem runat="server" Text="1" Value="1" />
            <telerik:RadComboBoxItem runat="server" Text="2" Value="2" />
            <telerik:RadComboBoxItem runat="server" Text="3" Value="3" />
            <telerik:RadComboBoxItem runat="server" Text="4" Value="4" />
        </Items>
    </telerik:RadComboBox>

    <br />
    <br />

    <asp:CheckBox ID="CheckBox1" runat="server"
        AutoPostBack="True"
        OnCheckedChanged="CheckBox1_CheckedChanged"
        Text="Check Me"
        TextAlign="Left" />

    <br />
    <br />

    <asp:TextBox ID="TextBox1" runat="server" />

    <telerik:RadCodeBlock runat="server">
        <script type="text/javascript">
            function onAjaxRequestStart(s, e) {
                var target = e.get_eventTarget(),
                    checkBoxId = '<%= CheckBox1.ClientID %>';
                if (target === checkBoxId) {
                    e.set_enableAjax(false);
                }
            }
        </script>
    </telerik:RadCodeBlock>
</div>
person SilverLight    schedule 18.05.2011