在同一页面上使用两个Telerik RadAjaxPanel控件

时间:2012-09-27 07:24:47

标签: asp.net telerik

是否可以在同一页面上并排使用两个独立的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();
        }

2 个答案:

答案 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控件。这样,您可以在按钮单击发生时将更新链接到所有更新。