首先,我通过页眉中的JavaScript函数看到了很多关于这种情况的问题和答案。我正在使用C#并在CodeBehind文件中定义了我的事件处理程序。
以下是创建我的按钮的代码:
Button btnDelete = new Button()
{
ID = "btnLeadershipRowDelete" + index.ToString(),
Text = "-"
};
btnDelete.OnClientClick = "BtnDeleteRow_Click";
btnDelete.Attributes.Add("style", "display: inline-block; width: 1.4em;");
pnlLeadershipControls.Controls.Add(btnDelete);
以下是为同一按钮呈现的HTML:
<input type="submit" name="ctl00$ctl00$cphContent$cphContent1$btnLeadershipRowDelete0" value="-"
onclick="BtnDeleteRow_Click;" id="ctl00_ctl00_cphContent_cphContent1_btnLeadershipRowDelete0"
style="display: inline-block; width: 1.4em;" />
这是我试图调用的事件处理程序方法:
protected void BtnDeleteRow_Click(object sender, EventArgs e)
{
DeleteControls(sender);
}
当我点击Chrome中的按钮时,没有任何反应。查看Chrome中的开发控制台,我发现以下错误:
default.aspx:1未捕获的ReferenceError:未定义BtnDeleteRow_Click 在HTMLInputElement.onclick(default.aspx:1)
我不知道自己做错了什么。任何想法都会有所帮助!
答案 0 :(得分:1)
请在您的onclick事件中添加“()”。
Delete.OnClientClick = "BtnDeleteRow_Click()";
这将在单击按钮时执行函数BtnDeleteRow_Click
,而不是引用它。
有关解释:
如果对元素使用内联onclick处理程序,则将直接执行该值。
<input type="submit" name="buttonName" value="-" onclick="BtnDeleteRow_Click();" id="buttonId" />
如果您在JavaScript代码中分配处理程序,则onclick函数的引用将替换为新函数
btnLeadershipRowDelete.onclick = BtnDeleteRow_Click;
或使用匿名包装函数
btnLeadershipRowDelete.onclick = function() {
BtnDeleteRow_Click();
};
答案 1 :(得分:1)
这就是我发表第一条评论的原因。您应该知道OnClientClick
和Click
之间的区别。
如果要将方法分配给动态按钮,则需要执行此操作
btnDelete.Click += BtnDeleteRow_Click;