2011-08-23 14 views
5

この新しいボタンをこのDIVに移動する必要があります。これはうまくいくはずだが、そうではないようだ。私は間違って何をしていますか?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); 

2つのオブジェクトが見つかりました。何か案は?

(注:jQueryは使用できません)

ありがとうございます。

答えて

2

Controls.Add()はJavaScriptではなく、C#です。 JavaScriptを使用して別の要素に要素を追加するには、appendChild()を使用します。

navFooter.appendChild(button5); 
+0

IDは問題ではありません。私はコントロールを取得しています。たとえば、私が警告している場合(button5.value); "Five"を返します。しかし、ありがとう。 – user390480

+0

@ user390480、あなたがコントロールを取得していると述べたことがわかりました。私の答えの最初の部分は単に示唆にすぎません。答えの2番目の部分が問題を解決するはずです。あなたの 'Controls.Add()'を '.appendChild(button5)'に置き換えましたか? 'Controls.Add()'はJavaScriptではなく、C#です。 '.appendChild()'はJSの場合と同じです。 –

+0

appendChild!それでおしまい。ありがとうございました。 – user390480

0

なぜあなたはjavascriptを介してこれをやっていますか?

<div><asp:Panel>に変更すると、新しく作成されたボタンをこのパネルに直接追加できます。 <asp:Panel>は単に<div> html要素としてレンダリングされ、CssClassを追加してスタイルを同じに保つことができます。

サーバー側を全体的により詳細に制御できるため、JavaScriptについて心配する必要はありません。とにかくあなたはサーバー側の仕事をやっているからです。

+0

私はそのコードにアクセスできません。 DIVは既にそこにあります。しかし、ありがとう。 – user390480

0

だけのdivににrunat = "server" を追加し、背後にあるコードでそれを追加します。

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

それはとにかくdiv要素を出力として別のオプションは、パネルを使用することです:

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

そして背後にあるコードで:

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

EDIT:DI以来Vにアクセスできない場合は、回避策を次に示します。

Button Button1 = new Button(); 

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

私はそのDIVコードにアクセスできません。 DIVは既にそこにあり、私はそれを変更することはできません。 – user390480