繁体   English   中英

我有通过javascript动态创建的输入按钮,它应该调用服务器c#函数,但它们不会

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

我在我的页面中有这个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代码直接放在页面上,它就可以了。 只是在动态生成按钮时不起作用。

身体可以帮助我吗?

你在这里缺少一些概念。

首先,没有办法用javascript创建服务器元素,因为它是一种客户端语言。 请记住,当您声明<asp:Button runat="server">标记时,它将由ASP.NET引擎解释,并将呈现为HTML(在这种情况下为<input type="submit" /> )。 此外, onserverclick事件不存在。

如果你真的需要用Javascript创建这个元素,可以在click事件上使用jQuery直接调用ASP.NET AJAX页面方法,如下所述

更好的解决方案是在页面后面的代码中动态创建Button,例如:

 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');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM