2011-06-09 51 views
0

我有一个页面,它在它加载时通过dynanically创建一个链接,点击链接后它应该在数据库中循环获取所有记录并显示另一组链接,然后当我点击这些链接也应该给我这个特定的记录像这样一个事件处理程序没有在WebForms中触发

Q的所有信息:加载页面时,它创建与事件处理程序相关联的第一个链接,它触发第一个事件处理程序(的getName )但它没有触发第二个事件处理程序(GetnameDetails)

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init 

     If ViewState.Item("nameload") IsNot Nothing Then 
      If ViewState.Item("nameload").ToString = "True" Then 
       Getname(Me, New EventArgs) 
      ElseIf ViewState.Item("Getnameload").ToString = "True" Then 
       GetnameDetails(Me, New EventArgs) 
      Else 
       CreateNamesButton() 
      End If 
     Else 
      CreateNamesButton() 
     End If 

页面加载和名称的链接创建

Private Sub CreateNamesButton() 
     Dim btnName As New LinkButton 
     btnName .Text = "Name" 
     Panel1.Controls.Add(btnName) 
     AddHandler btnName .Click, AddressOf Getname 
     ViewState.Item("nameload") = False.ToString 
    End Sub 

它火nameload事件处理

Private Sub Getname(ByVal sender As Object, ByVal e As EventArgs) 
     ' get products list here 
     ' and set handlers for each link 

     Dim testDb As New customer 
     Dim arr As ArrayList = testDb.DbLoop() 
     Dim ObjCustList As CustomerBo 
     Dim CustInt As Integer 
     Dim str As String 

     Dim link As LinkButton 

     For Each ObjCustList In arr 
      CustInt = ObjCustList.Cus_Id 
      link = New LinkButton 
      Panel1.Controls.Add(New LiteralControl("<br />")) 
      link.ID = CustInt 
      link.Text = ObjCustList.FirstName 
      link.CommandArgument = CustInt 
      str = link.CommandArgument 
      AddHandler link.Click, AddressOf GetnameDetails 
      Me.Panel1.Controls.Add(link) 

     Next ObjCustList 

     ViewState.Item("nameload") = True.ToString 

    End Sub 

它不火

Private Sub GetnameDetails(ByVal sender As Object, ByVal e As EventArgs) 

     Dim getRecord As New CustomerBo 
     Dim lbLink As LinkButton = CType(sender, LinkButton) 
     Dim CustomerID As String = lbLink.CommandArgument 
     Dim getLink As String = lbLink.Text 
     Dim SendCustID As Integer 
     SendCustID = CInt(CustomerID) 
     getRecord.Cus_Id = SendCustID 

     Dim getAllcatInfo As New customer 
     getRecord = getAllcatInfo.R_List(getRecord) 
     Panel1.Controls.Add(New LiteralControl("<table><tr>")) 
     Panel1.Controls.Add(New LiteralControl("<td colspan=2 align=center valign=middle >")) 
     Panel1.Controls.Add(New LiteralControl(getRecord.FirstName)) 
     Panel1.Controls.Add(New LiteralControl("</td>")) 
     Panel1.Controls.Add(New LiteralControl("<td>")) 
     Panel1.Controls.Add(New LiteralControl(getRecord.LastName)) 
     Panel1.Controls.Add(New LiteralControl("</td>")) 
     Panel1.Controls.Add(New LiteralControl("<td>")) 
     Panel1.Controls.Add(New LiteralControl(getRecord.Telephone)) 
     Panel1.Controls.Add(New LiteralControl("</td></tr></table>")) 
     ViewState.Item("Getnameload") = True.ToString 

     'get product details here 
    End Sub 

什么我做错了谢谢

回答

1

因为你的其他条件没有执行,请在代码中阅读我的评论。

If ViewState.Item("nameload").ToString = "True" Then // this is true 
     Getname(Me, New EventArgs) // Executed 
    ElseIf ViewState.Item("Getnameload").ToString = "True" Then // this is not executed and not attached to the handler 
     GetnameDetails(Me, New EventArgs) // not executed 
    Else 
+0

您的代码不会编译。 – user774411 2011-06-09 17:05:35

相关问题