我的页面中有这个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代码直接放在页面上,它就可以了。只是在动态生成按钮时不起作用。
身体可以帮助我吗?
答案 0 :(得分:2)
你在这里缺少一些概念。
首先,没有办法用javascript创建服务器元素,只是因为它是客户端语言。请记住,当您声明<asp:Button runat="server">
标记时,它将由ASP.NET引擎解释,并将呈现为HTML(在这种情况下为<input type="submit" />
)。此外,onserverclick
事件不存在。
如果你真的需要用Javascript创建这个元素,可以在click事件上使用jQuery直接调用ASP.NET AJAX页面方法为described here。
更好的解决方案是在页面后面的代码中动态创建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);
答案 1 :(得分:0)
您是否尝试将属性设置为:
chk.setAttribute('onclick', 'BtnAdicionar_Click');