Вложенные RadAjaxPanel Telerik не обновляются - PullRequest
4 голосов
/ 30 сентября 2011

Я создаю RadAjaxPanel с некоторыми внутренними элементами управления. Один из внутренних элементов управления - это вложенный radajax с TextBox и button.both режима обновления radajaxpanel всегда (в коде позади).когда я нажимаю на кнопку во вложенном radajax родительский radajax будет обновлен, вложенный radajax будет скрыт !! Почему?Я тестирую этот сценарий с панелью обновления и работает правильно ...

Разметка:

<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" 
            onajaxsettingcreated="RadAjaxPanel1_AjaxSettingCreated1">

            <asp:TextBox runat="server" ID="txt2" />
            <asp:Button  Text="but1" ID="but"  runat="server" onclick="but_Click" />

        <telerik:RadAjaxPanel ID="RadAjaxPanel2" runat="server" Height="200px" 
                Width="300px" onajaxsettingcreated="RadAjaxPanel2_AjaxSettingCreated">
            <asp:TextBox runat="server" ID="txt" />
            <asp:Button Text="but2" ID="but2" runat="server" onclick="but2_Click" />
        </telerik:RadAjaxPanel>

        </telerik:RadAjaxPanel>    

Код сзади:

protected void but_Click(object sender, EventArgs e)
        {
            txt.Text = "ok";
            txt2.Text = "ok";
        }

        protected void but2_Click(object sender, EventArgs e)
        {
            txt.Text = "ok";
            txt2.Text = "ok";
        }

        protected void RadAjaxPanel1_AjaxSettingCreated1(object sender, Telerik.Web.UI.AjaxSettingCreatedEventArgs e)
        {
            e.UpdatePanel.UpdateMode = UpdatePanelUpdateMode.Always;
        }
        protected void RadAjaxPanel2_AjaxSettingCreated(object sender, Telerik.Web.UI.AjaxSettingCreatedEventArgs e)
        {
            e.UpdatePanel.UpdateMode = UpdatePanelUpdateMode.Always;
        }

1 Ответ

4 голосов
/ 30 сентября 2011

Вам не нужно иметь RadAjaxPanel вложенное внутри другого RadAjaxPanel. Я не вижу в вашем коде ничего, что оправдывает это, поэтому самым простым решением было бы удалить это.

Если вы хотите иметь больше контроля над тем, какие элементы управления управляются AJAX, я бы предложил вместо этого использовать RadAjaxManager:

<telerik:RadAjaxManager ID="AjaxManager" runat="server" UpdatePanelsRenderMode="Inline">    
    <AjaxSettings>                    
        <telerik:AjaxSetting AjaxControlID="MyControl">                
            <UpdatedControls>
                <telerik:AjaxUpdatedControl ControlID="MyOtherControl" />
            </UpdatedControls>          
        </telerik:AjaxSetting>
    </AjaxSettings>    
</telerik:RadAjaxManager>  

Похоже, второй RadAjaxPanel просто устанавливает фиксированную ширину. Просто используйте для этого обычный Panel или DIV, и все будет готово.

...