开发者

what is the correct configuration of RadAjaxManager - this issue is in ralationship with UpdatePanel !

开发者 https://www.devze.com 2022-12-28 21:35 出处:网络
At first look at the below aspx: <%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeBehind=\"WebForm4.aspx.cs\" Inherits=\"Amlak.WebForm4\" %>

At first look at the below 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>

My code behind is like this:

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 = "";
            }
        }
    }
}

My goals:

  1. I want to force RadComboBox1 to work in AJAX mode and change the CheckBox1.Checked by defined conditions in code behind. -> do not want postback for this.

  2. I want to force CheckBox1 to work in PostBack mode and change the TextBox1.text by defined conditions in code behind. -> I want postback for this.

In this scenario -> RadComboBox1 works fine

but I don't know why OnCheckedChanged="CheckBox1_CheckedChanged" does not fire when we change check of CheckBox1! (because we added it as update of RadComboBox1 In RadAjaxManager1).


My questions:

Should I add RadComboBox1 as update Of RadComboBox1 or not? However it works fine without adding this.

If we add ChechBox1 To RadAjaxManager1 like below:

<%@ 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="CheckBox开发者_运维百科1">
                    <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>

So it works fine in AJAX mode, but I want to force CheckBox1 to work in PostBack!

How can I fix this issue?

Should I add TextBox1 as update of RadComboBox1 in RadAjaxManager or not?

Thanks for attention to my question. best regards


Current RadAjax Limitations says,

RadAjaxManager setting will not ajaxify the button... ...when having no updated controls

So, you probably will have to do something like:

<UpdatedControls>
               <telerik:AjaxUpdatedControl ControlID="ChechBox1" />
</UpdatedControls>


You can take advantage of the OnRequestStart even of the RadAjaxManager to disable Ajax functionality for specific requests. Here's an updated version of your code that works as you requested:

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号