是否可以在同一页面上并排使用两个独立的RadAjaxPanel控件?
我在同一页面中使用两个单独的RadAjaxPanel。一个面板包含TextBox和Button。另一个包含RadGrid控件。当我点击面板#1中的按钮时,第二个面板消失。我在按钮单击事件中输入visible = True。
ASPX页面
<div>
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
</telerik:RadScriptManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Skin="Default">
</telerik:RadAjaxLoadingPanel>
<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" LoadingPanelID="RadAjaxLoadingPanel1" Height="200px" Width="300px">
<table><tr><td><asp:Label ID="Label1" runat="server" Text="Name"></asp:Label> </td>
<td><%--<telerik:RadTextBox ID="RadTextBox1" runat="server">
</telerik:RadTextBox>--%><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</td></tr>
<tr>
<td>
</td>
<td>
<telerik:RadButton ID="RdbtnAdd" runat="server" Text="Submit" CausesValidation="true"
ValidationGroup="AddButtonValidate" OnClick="RdbtnAdd_Click"
Width="75px">
</telerik:RadButton>
</td>
</tr>
</table>
</telerik:RadAjaxPanel>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel2" runat="server" Skin="Default">
</telerik:RadAjaxLoadingPanel>
<telerik:RadAjaxPanel ID="RadAjaxPanel2" runat="server" LoadingPanelID="RadAjaxLoadingPanel2" Height="200px" Width="300px">
<table><tr><td><asp:Label ID="Label2" runat="server" Text="Name"></asp:Label> </td>
<td><%--<telerik:RadTextBox ID="RadTextBox2" runat="server">
</telerik:RadTextBox>--%><asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</table>
</telerik:RadAjaxPanel>
</div>
代码背后:
protected void RdbtnAdd_Click(object sender, EventArgs e)
{
Session["name"] = TextBox1.Text;
//RadAjaxPanel2.Visible = true;
TextBox2.Text = Session["name"].ToString();
}
答案 0 :(得分:2)
您可以尝试在网页中添加ajax管理器。当您单击按钮时,这将强制ajax回发。
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" >
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RdbtnAdd">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadAjaxPanel1" LoadingPanelID="RadAjaxLoadingPanel1" />
<telerik:AjaxUpdatedControl ControlID="RadAjaxPanel2" LoadingPanelID="RadAjaxLoadingPanel2" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
或者,当您单击按钮时,您可以尝试在第二个面板上强制执行ajax回发。所以在你点击按钮的事件中添加......
ScriptManager.RegisterStartupScript(Page, this.GetType, "updatePanel", "$find('" + RadAjaxPanel2.ClientID + "').ajaxRequestWithTarget('" + RadAjaxPanel2.UniqueID + "', '');", true)
这两种解决方案都应该有效。第二个只需要点击按钮事件中的一行,所以我先尝试一下。
答案 1 :(得分:0)
是的,您可以拥有任意数量的RadAjaxpanel控件。但请注意,RadAjaxPanel的功能与UpdatePanel不同。一次只有一个RadAjaxPanel回复;但是,您可以调用客户端API ajaxRequest(“arg”);刷新另一个的方法。我从来没有遇到过一个面板消失的问题......我们可能需要看一些代码才能进行调试。
您还可以使用RadAjaxManager(或代理)来定义一个控件导致回发时应更新的AJAX控件。这样,您可以在按钮单击发生时将更新链接到所有更新。