Sever侧创建的按钮不会触发点击事件

时间:2018-03-19 14:20:24

标签: html asp.net vb.net button onclick

按照ASP.NET/HTML: HTML button's onClick property inside ASP.NET (.cs)

上的示例回答

如果我在页面上正常添加按钮html,按钮"Click Me!"可以正常工作。如果我使用ASP.NET VB.NET InnerHTML将其添加到页面中,则单击不会触发。有谁知道为什么?

下面是HTML呈现后的内容。

enter image description here

下面是ASP.NET VB.NET代码:

strTbl1 = "<table style='text-align:Left;'><tr class='spaceUnder'>"
strTbl1 = strTbl1 + "<td style=''><button id='Button1' OnServerClick='Button1_OnClick' runat='server'>Click me!</button></td></tr>"
strTbl1 = strTbl1 + "</table>"
Task1Assignees.InnerHtml = strTbl1

我尝试了<input type=button...asp:Button ..等,但都没有注册点击事件。如果我尝试使用asp类型,那么我也会遇到JavaScript错误。

更新

服务器端功能

Protected Sub Button1_OnClick(ByVal sender As Object, ByVal e As EventArgs)
    MsgBox("hi")
End Sub

最终修正

因此,使用Dynamic created Buttons VB.Net with Loop中的示例和下面接受的答案,我能够修复我的代码

Page_Load (在IsPostBack检查之外)

 Task1Assignees.Controls.Clear()
 For j As Integer = 0 To System.Web.HttpContext.Current.Session("intAssignees") Step 1
        Dim btn As New Button
        btn.Text = "Mark Completed"
        btn.CssClass = "btn btn-success"
        btn.ID = "btnAssignee" & j
        AddHandler btn.Click, AddressOf Send
        Task1Assignees.Controls.Add(btn)
  Next

按钮创建

 System.Web.HttpContext.Current.Session("intAssignees") = ds1.Tables(0).Rows.Count

  Task1Assignees.Controls.Clear()
      For j As Integer = 0 To System.Web.HttpContext.Current.Session("intAssignees") Step 1
         Dim btn As New Button
         btn.Text = "Mark Completed"
         btn.Cssclass = "btn btn-success"
         btn.ID = "btnAssignee" & j
         AddHandler btn.Click, AddressOf Send
         Task1Assignees.Controls.Add(btn)
    Next

按钮功能

Sub Send()
    Response.Redirect("~\Home.aspx")
End Sub

2 个答案:

答案 0 :(得分:0)

这不会起作用,但您可以改为创建服务器端HTML控件。

var table = new HtmlTable();
var row = new HtmlTableRow();
var cell = new HtmlTableCell();
var btn = new LinkButton();

btn.Text = "Click Me!";
btn.Click += Button1_OnClick;

cell.Controls.Add(btn);
row.Cells.Add(cell);
table.Rows.Add(row);
Task1Assignees.Controls.Add(table);

答案 1 :(得分:0)

1)尝试将该按钮更改为ASP:Button对象,而不是HTML按钮。

2)如果这不起作用,请将视图从代码更改为设计视图,然后双击该按钮,Visual Studio应自动创建该方法(或者在您的情况下,指导您执行代码的方法)按钮单击。)

3)如果不起作用,请从工具栏中拖放一个按钮,然后双击并重复步骤2.&lt; - 这应该可以正常工作