我有输入按钮动态创建的javascript应该调用服务器c#函数,但他们没有

I have input buttons created dynamically by javascript which should call a server c# function but they dont

本文关键字:函数 服务器 他们 调用 动态 按钮 输入 创建 javascript      更新时间:2023-09-26

我的页面中有这个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.
}

p。:我在一个属于主页的页面。

如果我得到由Google Chrome的Inspect元素生成的按钮的代码,它会给我这个:

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

如果我把这个HTML代码,直接在页面上,它工作。只是在动态生成按钮时不起作用。

有谁能帮帮我吗?

你这里漏掉了一些概念。

首先,无法用javascript创建服务器元素,因为它是一种客户端语言。请记住,当您声明一个<asp:Button runat="server">标记时,它将由ASP进行解释。NET引擎,并将呈现为HTML(在本例中为<input type="submit" />)。onserverclick事件不存在

如果你真的需要用Javascript创建这个元素,你可以在click event上使用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);

是否尝试将属性设置为:

chk.setAttribute('onclick', 'BtnAdicionar_Click');