2011-08-23 9 views
5

Necesito mover este nuevo botón a este DIV que ya existe. Esto me parece que debería funcionar pero no funciona. ¿Qué estoy haciendo mal?Mover el botón a Div

Button button5 = new Button(); 
button5.Text = "Five"; 
button5.CssClass = "buttonCSS"; 
button5.Click += new EventHandler(button5_Click); 
button5.ID = "button5"; 
this.Controls.Add(button5);    

string myscript = @"  
    var navFooter = document.getElementById('NavFooter'); 
    var button5 = document.getElementById('button5'); 
    navFooter.Controls.Add(button5); 
    "; 
Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", myscript, true); 

Sé que se están encontrando los dos objetos. ¿Algunas ideas?

. (Nota: no puedo usar jQuery)

Gracias.

Respuesta

2

Controls.Add() es C#, no JavaScript. Para añadir un elemento a otro elemento con JavaScript, utilice appendChild():

navFooter.appendChild(button5); 
+0

La ID no es el problema. Estoy obteniendo el control. Por ejemplo, si hago una alerta (button5.value); luego devuelve "Cinco". Gracias sin embargo. – user390480

+0

@ user390480, vi que mencionaste que obtendrías los controles. La primera parte de mi respuesta es simplemente una sugerencia. La segunda parte de la respuesta debería arreglar tu problema. ¿Reemplazó su 'Controls.Add()' con '.appendChild (button5)'? 'Controls.Add()' no es JavaScript, es C#. '.appendChild()' es el equivalente JS en este caso. –

+0

appendChild! Eso es. Gracias. – user390480

0

¿Por qué haces esto a través de javascript?

Si cambia el contenido de <div> a <asp:Panel>, puede agregar el botón recién creado directamente en este panel. El <asp:Panel> se representa simplemente como un elemento html <div>, y puede agregar CssClass a este para mantener los estilos iguales.

Le da un mayor control general en el lado del servidor y no necesita preocuparse por el javascript. Especialmente porque estás haciendo trabajo del lado del servidor de todos modos.

+0

No tengo acceso a ese código. El DIV ya está allí. Gracias sin embargo. – user390480

0

Sólo tiene que añadir runat = "servidor" de la div, y añadirlo en el código detrás:

<div id="dvButtonContainer" runat="server" ... > 

Otra opción es utilizar un panel, ya que da salida a un div de todos modos:

<asp:Panel ID="dvButtonContainer" runat="server" ... > 

Y en el código subyacente:

Button button = new Button(); 
dvButtonContainer.Controls.Add(button); 

EDITAR: Desde DI No se puede acceder a V, aquí hay una solución:

Button Button1 = new Button(); 

Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", String.Format("document.getElementById(\"div1\").appendChild({0});", Button1.UniqueID), true); 
+0

No tengo acceso a ese código DIV. El DIV ya está allí y no puedo cambiarlo. – user390480

Cuestiones relacionadas