0

是否可以在同一页面上并排使用两个单独的 RadAjaxPanel 控件?

我在同一页面中使用了两个单独的 RadAjaxPanel。一个面板包含一个文本框和一个按钮。另一个包含一个 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();
        }
4

2 回答 2

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)

这两种解决方案都应该有效。第二个只需要您的按钮单击事件中的一行,所以我会先尝试。

于 2012-09-27T19:33:26.093 回答
0

是的,您可以拥有任意数量的 RadAjaxpanel 控件。但是请注意,RadAjaxPanel 的功能与 UpdatePanel 不同。一次只有一个 RadAjaxPanel 回帖;但是,您可以调用客户端 API ajaxRequest("arg"); 刷新其他方法。我从来没有遇到过一个面板消失的问题......我们可能需要查看一些代码才能进行调试。

您还可以使用 RadAjaxManager(或代理)来定义应在一个控件导致回发时更新的 AJAX 控件。这样,您可以在单击按钮时将更新链接到所有更新。

于 2012-09-27T12:22:57.920 回答