问题描述
|
我正在动态地在链接按钮上添加一个事件处理程序,首先是在页面加载时o用产品类别创建一个链接按钮。单击产品类别后,它将触发一个事件并传递product-id IN发送者对象。
这是我的问题:读取页面加载事件处理程序时,出现错误“ 0”
码:
sub page int
Me.Page.EnableViewState = True
end sub
page load
Catdisplay()
If ViewState(\"GetProductClicked\") = True Then
GetProduct(Me,New EventArgs)
End If
Function Catdisplay() As Boolean
Dim arr As New ArrayList
Dim objTesting As New Bo_Dall_Layer.BoCategory
arr = objTesting.GetAllCategory()
Dim objExtra As Bo_Dall_Layer.BoCategory
Dim Cat_hyperLink As LinkButton
For Each objExtra In arr
Cat_hyperLink = New LinkButton
Cat_hyperLink.Text = objExtra.CategoryName
Cat_hyperLink.CommandArgument = objExtra.CategoryId
AddHandler Cat_hyperLink.Click,AddressOf GetProduct
CatPanel.Controls.Add(New LiteralControl(\"<br />\"))
CatPanel.Controls.Add(Cat_hyperLink)
Next
ViewState.Item(\"CategoryLoaded\") = False.ToString
End Function
Private Sub GetProduct(ByVal sender As Object,ByVal e As EventArgs)
Dim arrCollectList As New ArrayList
Dim getLinkDetail As LinkButton = CType(sender,LinkButton)
Dim getCatID As String = getLinkDetail.CommandArgument
Dim SendCatID As Integer
SendCatID = CInt(getCatID)
Dim objGetProduct As New Bo_Dall_Layer.BoProduct
arrCollectList = objGetProduct.getSelectProduct(SendCatID)
Dim objTemCollectPrd As Bo_Dall_Layer.BoProduct
Dim lblPrdName As Label
Dim lblPrdDes As Label
Dim lblPrdPrice As Label
Dim addCart As LinkButton
For Each objTemCollectPrd In arrCollectList
lblPrdName = New Label
lblPrdDes = New Label
lblPrdPrice = New Label
addCart = New LinkButton
getCatID = objTemCollectPrd.ProductId
PrdName.Controls.Add(New LiteralControl(\"<br />\"))
lblPrdName.Text = objTemCollectPrd.ProductName
PrdName.Controls.Add(New LiteralControl(\"<br />\"))
PrdDesc.Controls.Add(New LiteralControl(\"<br />\"))
lblPrdDes.Text = objTemCollectPrd.ProductDescription
PrdDesc.Controls.Add(New LiteralControl(\"<br />\"))
lblPrdPrice.Text = objTemCollectPrd.ProductPrice
PrdPrice.Controls.Add(New LiteralControl(\"<br />\"))
lblPrdPrice.Text = objTemCollectPrd.ProductPrice
PrdPrice.Controls.Add(New LiteralControl(\"<br />\"))
PrdCart.Controls.Add(New LiteralControl(\"<br />\"))
addCart.Text = \"Add to Cart\"
addCart.CommandArgument = objTemCollectPrd.ProductId
PrdCart.Controls.Add(New LiteralControl(\"<br />\"))
PrdName.Controls.Add(lblPrdName)
PrdDesc.Controls.Add(lblPrdDes)
PrdPrice.Controls.Add(lblPrdPrice)
PrdCart.Controls.Add(addCart)
Next
ViewState.Item(\"GetProductClicked\") = True
End Sub
页面重新加载时给我一个错误
无法将类型为'ASP.products_aspx \'的对象转换为类型为\'System.Web.UI.WebControls.LinkButton \'
Dim getLinkDetail为LinkButton = CType(发送方,LinkButton)
解决方法
在第4行中,您传递了对页面(Me)的引用作为发送者参数。在带有这行
Dim getLinkDetail As LinkButton = CType(sender,LinkButton)
的GetProduct
方法中,您尝试将页面投射为链接按钮。您根本没有在页面加载方法中分配事件处理程序,只是在调用该方法。