簡體   English   中英

服務器端創建的按鈕不會觸發點擊事件

[英]Sever side created button doesn't fire click event

遵循在ASP.NET/HTML上找到的示例答案:ASP.NET(.cs)中HTML按鈕的onClick屬性

按鈕"Click Me!" 如果我在頁面上正常添加html按鈕,則可以使用。 如果使用ASP.NET VB.NET InnerHTML將其添加到頁面InnerHTML ,則不會觸發該單擊。 有人知道為什么嗎?

下面是渲染HTML之后的內容。

在此處輸入圖片說明

下面是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 ..等,但是都沒有注冊click事件。 如果嘗試使用asp類型,那么也會出現JavaScript錯誤。

更新:

服務器端功能

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

最終修復

因此,使用來自帶有循環的動態創建的Buttons VB.Net的示例以及下面的接受的答案,我能夠像這樣修復我的代碼

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

那是行不通的,但是您可以創建服務器端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)嘗試將該按鈕更改為ASP:Button對象,而不是HTML按鈕。

2)如果不起作用,請將視圖從代碼視圖更改為設計視圖,然后雙擊按鈕,Visual Studio應自動創建方法(或者,在您的情況下,將您定向到將為按鈕執行代碼的方法點擊。)

3)如果不起作用,請從工具欄上拖放一個按鈕,然后雙擊並重復步驟2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM