3

テーブルにいくつかのボタンを動的に作成するこの JavaScript がページにあり、これらのボタンはサーバー側で関数を呼び出す必要があります。

JavaScript コードは次のとおりです。

var rowContent = document.createElement('td');
rowContent.style.width = '12%';
var chk = document.createElement('input');
chk.type = 'submit';
chk.value = 'Adicionar';
chk.setAttribute('Id', 'Sub' +id);
chk.name = "ftps"
chk.setAttribute('runat', 'server');
chk.setAttribute('onserverclick', 'BtnAdicionar_Click');

rowContent.appendChild(chk);

サーバー側の機能は次のようになります。

public void BtnAdicionar_Click(object sender, EventArgs e)
{
   Response.Redirect("Default.aspx"); //just to see if something happens.
}

PS .: MasterPage にあるページにいます。

Google Chrome の Inspect Element によって生成されたボタンのコードを取得すると、次のようになります。

<input type="submit" value="Adicionar" id="Sub1" name="ftps" runat="server" onserverclick="BtnAdicionar_Click">

そして、この HTML コードをページに直接配置すると、機能します。ボタンが動的に生成されている場合は機能しません。

体は私を助けることができますか?

4

2 に答える 2

2

ここにはいくつかの概念がありません。

まず第一に、JavaScript はクライアント側の言語であるため、サーバー要素を JavaScript で作成する方法はありません。タグを宣言する<asp:Button runat="server">と、ASP.NET エンジンによって解釈され、HTML としてレンダリングされることに注意してください (<input type="submit" />この場合)。また、onserverclickイベントは存在しません。

本当に Javascript でこの要素を作成する必要がある場合は、ここで説明されているように、クリック イベントで jQuery を使用して、ASP.NET AJAX ページ メソッドを直接呼び出すことができます

より良い解決策は、次のように、ページのコード ビハインドでボタンを動的に作成することです。

 TableCell td = new TableCell();
 Button button = new Button();
 button.Text = "Adicionar";
 button.ID = "Sub" + id; // Whatever "id" is
 button.Click += new EventHandler(BtnAdicionar_Click);
 td.Controls.Add(td);
于 2013-03-27T21:01:32.097 に答える
0

属性を次のように設定しようとしましたか:

chk.setAttribute('onclick', 'BtnAdicionar_Click');
于 2013-03-27T20:46:24.687 に答える