ما هو التكوين الصحيح لـ RadajaxManager - هذه المشكلة في Ralationship مع UpdatePanel!
-
01-10-2019 - |
سؤال
في البداية ، انظر إلى 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 = "";
}
}
}
}
أهدافي:
أريد أن أجبر
RadComboBox1
للعمل في وضع AJAX وتغيير مربع الاختيار 1. التحقق من الشروط المحددة في الكود وراء. -> لا تريد postback لهذا.أريد أن أجبر
CheckBox1
للعمل في وضع Postback وتغييرTextBox1.text
حسب الشروط المحددة في الكود وراء. -> أريد Postback لهذا.
في هذا السيناريو -> 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
أم لا؟
شكرا على الاهتمام بسؤالي. مع أطيب التحيات
المحلول 2
يمكنك الاستفادة من 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>
نصائح أخرى
قيود Radajax الحالية يقول ،
لن يؤدي إعداد RadajaxManager
لذلك ، ربما يتعين عليك القيام بشيء مثل:
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="ChechBox1" />
</UpdatedControls>