2011-12-28 28 views
7

Estoy tratando de ejecutar telerik rad ventana del código detrás. Pero tengo algunos problemas. No sé si es importante, pero estoy tratando de ejecutar la ventana del rad desde el botón al que se hizo clic en el modo de edición desde la cuadrícula rad.Cómo ejecutar telerik RadWindow desde el código detrás de

RadWindow window1 = new RadWindow(); 
window1.NavigateUrl = "http://www.google.com"; 
window1.VisibleOnPageLoad = true; 
window1.ID = "RadWindow1"; 
window1.Width = 500; 
window1.Height = 300; 
window1.VisibleOnPageLoad = true;  
rwm_WindowManager.Windows.Add(window1); 

En la página que también tienen RadAjaxManagerrwm_WindowManager y puse en RadAjaxPanel.
El problema es que esta ventana rad nunca aparece. No hay errores, pero tampoco rad window.

+0

¿Puedes mostrar el código con RadAjaxPanel y WindowManager? Quizás el Panel no sea visible en absoluto. ¿Estás seguro de que se llama al código mostrado al hacer clic en el botón? – slfan

+0

por favor, ¿podría tratar de cambiar RadAjaxPanel a asp normal: Panel y comprobar si aparece RadWindow? –

Respuesta

3
<telerik:RadScriptManager ID="RadScriptManager1" runat="server"> 
    </telerik:RadScriptManager> 
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> 
    </telerik:RadAjaxManager> 
    <telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server"> 
     <telerik:RadWindowManager ID="RadWindowManager1" runat="server"> 
     </telerik:RadWindowManager> 
     <telerik:RadGrid ID="RadGrid1" runat="server" AutoGenerateColumns="false" OnNeedDataSource="RadGrid1_NeedDataSource" 
      OnItemCommand="RadGrid1_ItemCommand"> 
      <MasterTableView DataKeyNames="ID"> 
       <Columns> 
        <telerik:GridBoundColumn DataField="ID" UniqueName="ID" HeaderText="ID"> 
        </telerik:GridBoundColumn> 
        <telerik:GridTemplateColumn> 
         <ItemTemplate> 
         </ItemTemplate> 
         <EditItemTemplate> 
          <asp:Button ID="Button1" Text="Open window" CommandName="OpenWindow" runat="server" /> 
         </EditItemTemplate> 
        </telerik:GridTemplateColumn> 
        <telerik:GridEditCommandColumn> 
        </telerik:GridEditCommandColumn> 
       </Columns> 
      </MasterTableView> 
     </telerik:RadGrid> 
    </telerik:RadAjaxPanel> 

........................

protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) 
{ 
    dynamic data = new[] { 
      new { ID = "1", Name ="Name11",ParentID = "0"}, 
      new { ID = "2", Name ="Name11",ParentID = "0"}, 
      new { ID = "3", Name ="Name11",ParentID = "0"}, 
      new { ID = "4", Name ="Name11",ParentID = "0"} 
     }; 
    RadGrid1.DataSource = data; 
} 
protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e) 
{ 
    if (e.CommandName == "OpenWindow") 
    { 
     //RadWindowManager 
     RadWindow window1 = new RadWindow(); 
     window1.NavigateUrl = "http://www.google.com"; 
     window1.VisibleOnPageLoad = true; 
     window1.ID = "RadWindow1"; 
     window1.Width = 500; 
     window1.Height = 300; 
     RadWindowManager1.Windows.Add(window1); 

    } 
} 

poner su RadWindowManager dentro RadAjaxPanel.

+0

Oh, muchas gracias. Mi problema fue que omití RadAjaxManager (solo había RadAjaxPanel). Considere un control de usuario con RadAjaxPanel del que quiero abrir una RadWindow y este control se usa en muchas páginas. Cada página puede contener muchos de estos controles, pero una página puede contener solo un RadWindowManager. ¿Es posible lograr tal escenario? –

+0

Si se omite RadWindowManager y RadWindow se agrega directamente a RadAjaxPanel, todo funciona bien. No lo entiendo –

1

Acabo de tener un problema similar. Resolví que de este modo:

RadAjaxManager.GetCurrent(Page).ResponseScripts.Add(String.Format("$find('{0}').show();", window1.ClientID)); 

Mis aplicaciones utilizan RadAjax que hace que la propiedad VisibleOnPageLoad problemática, por lo que deben evitarse por completo.

Cuestiones relacionadas