2011-08-23 14 views
5

Potrzebuję przenieść ten nowy przycisk do tego DIV, który już istnieje. Wydaje mi się, że to powinno działać, ale nie działa. Co ja robię źle?Przenieś przycisk do 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); 

Wiem, że znaleziono dwa obiekty. Jakieś pomysły?

. (Uwaga: Nie można używać jQuery)

Dziękuję.

Odpowiedz

2

Controls.Add() to C#, a nie JavaScript. Aby dołączyć element do innego elementu z JavaScript, użyj appendChild():

navFooter.appendChild(button5); 
+0

Identyfikator nie stanowi problemu. Przejmuję kontrolę. Na przykład, jeśli zrobię alert (wartość 5.); następnie zwraca "Pięć". W każdym razie dzięki. – user390480

+0

@ user390480, Widziałem, że wspomniałeś, że otrzymujesz kontrolę. Pierwsza część mojej odpowiedzi jest jedynie sugestią. Druga część odpowiedzi powinna rozwiązać Twój problem. Czy zastąpiłeś 'Controls.Add()' z '.appendChild (button5)'? 'Controls.Add()' nie jest JavaScript, to C#. '.appendChild()' jest odpowiednikiem JS w tym przypadku. –

+0

appendChild! to jest to! Dziękuję Ci. – user390480

0

Dlaczego robisz to poprzez javascript?

Jeśli zmienisz zawierający <div> na <asp:Panel>, możesz dodać nowo utworzony przycisk bezpośrednio do tego panelu. <asp:Panel> jest renderowany po prostu jako element html <div> i możesz dodać do niego CssClass, aby zachować ten sam styl.

Zapewnia większą ogólną kontrolę po stronie serwera i nie trzeba się martwić o javascript. Zwłaszcza, że ​​i tak pracujesz po stronie serwera.

+0

Nie mam dostępu do tego kodu. DIV już tam jest. W każdym razie dzięki. – user390480

0

Wystarczy dodać runat = "server" do div i dodać go w kodzie za:

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

Inną opcją jest użycie panelu, jak wyprowadza div i tak:

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

I w kodzie za:

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

EDIT: Ponieważ DI V jest niedostępne, oto sposób obejścia:

Button Button1 = new Button(); 

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

Nie mam dostępu do tego kodu DIV. DIV już tam jest i nie mogę go zmienić. – user390480