2015-05-29 105 views
0

下面是我要顯示的目錄的代碼。我正確地從數據庫中獲取內容以顯示在網頁上。我已將關於從數據庫獲取的內容的鏈接按鈕添加到表中。我不知道爲什麼,linkbutton不會觸發添加到它的事件。有誰能告訴我爲什麼和什麼原因導致事件不能開火?Linkbutton onclick事件不會在VB.Net中的UpdatePanel內部觸發

ASPX:

<form id="myForm" runat="server"> 
<asp:ScriptManager runat="server" ID="spm1" /> 
<asp:UpdatePanel runat="server" ID="up1"> 
<ContentTemplate> 
<table runat="server" id="doctorList" class="mel-table" style="text- align:center"> 
<tr> 
<td class="mel-table-header">Doctor Code</td> 
<td class="mel-table-header">First Name</td> 
<td class="mel-table-header">Last Name</td> 
<td class="mel-table-header">Is Active?</td> 
<td class="mel-table-header">Update</td> 
</tr> 
</table> 
</ContentTemplate> 
</asp:UpdatePanel> 
</form> 

ASPX.VB:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

    Dim content As String = "" 

    If Not IsPostBack Then 

     Dim docBOs As List(Of BO_Doctors) = docList.getDoctors() 

     // This brings the Doctors List from Database properly 

     For Each docB As BO_Doctors In docBOs 
      Dim tr As New HtmlTableRow 
      Dim td1 As New HtmlTableCell 
      td1.InnerText = docB.docCode 
      tr.Cells.Add(td1) 
      Dim td2 As New HtmlTableCell 
      td2.InnerText = docB.docfName 
      tr.Cells.Add(td2) 
      Dim td3 As New HtmlTableCell 
      td3.InnerText = docB.doclName 
      tr.Cells.Add(td3) 
      Dim td4 As New HtmlTableCell 
      td4.InnerText = docB.isActive 
      tr.Cells.Add(td4) 
      Dim td5 As New HtmlTableCell 
      Dim editBtn As New LinkButton 
      editBtn.Text = "Edit" 
      editBtn.ID = docB.docCode 

      AddHandler editBtn.Click, AddressOf editBtn_Click 
      td5.Controls.Add(editBtn) 
      tr.Cells.Add(td5) 
      doctorList.Rows.Add(tr) 
     Next 
    End If 
End Sub 

Protected Sub editBtn_Click(sender As Object, e As EventArgs) 
    Dim btn As LinkButton = CType(sender, LinkButton) 
    Dim doc As BO_Doctors = docList.getaDoctor(btn.ID) 

End Sub 
+1

上面提到的LinkBut​​ton在哪裏? – wooer

+0

linkbutton在運行時生成。 –

+0

然後你需要添加鏈接按鈕後在運行時將它作爲AsyncPostBackTrigger添加.. – wooer

回答

0

刪除

If Not IsPostBack Then 

條件,然後它會工作。這是因爲,內容位於更新面板內時,頁面將不會被加載。這種情況會使頁面在沒有添加內容的情況下進入初始階段。

0

好了,在回答的時候有你的代碼沒有LinkButton我可見。我認爲它是UpdatePanel外面,所以你需要把它作爲一個AsyncPostBackTrigger添加到您的UpdatePanel

像這樣的鏈接按鈕:

<asp:LinkButton ID="editBtn" runat="server" OnClick="editBtn_Click">Edit</asp:LinkButton> 

需要在UpdatePanel以聲明一個AsyncPostBackTrigger爲它能夠更新UpdatePanel

<asp:UpdatePanel ID="up1" runat="server"> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="editBtn" EventName="Click"/> 
     </Triggers> 
     <ContentTemplate> 
     '.... 
     </ContentTemplate> 
</asp:UpdatePanel> 

,以便在運行時添加一個AsyncPostBackTrigger: 」 ... 昏暗editBtn作爲新的LinkBut​​ton editBtn.Text = 「編輯」 editBtn.ID = docB.docCode

 AddHandler editBtn.Click, AddressOf editBtn_Click 
     td5.Controls.Add(editBtn) 
     tr.Cells.Add(td5) 
     doctorList.Rows.Add(tr) 


     Dim AsyncPBTrigger As New AsyncPostBackTrigger 
     AsyncPBTrigger.ControlID = editBtn.ID 
     AsyncPBTrigger.EventName = "Click" 

     up1.Triggers.Add(AsyncPBTrigger) 
+0

這一個沒有幫助。任何其他方式來做到這一點? –

+0

如果有的話,你會得到什麼錯誤? – wooer

+0

我沒有收到任何錯誤。但是當我點擊生成的鏈接按鈕時,運行時添加的內容就會熄滅。 –