J'ajoute dynamiquement un gestionnaire d'événements sur un bouton de lien, d'abord lorsque la page est chargée o créer un bouton de lien avec la catégorie de produit. En cliquant sur la catégorie de produit, il déclenche un événement et transmet l'objet expéditeur IN du produit.Ajouter eventhandler dynamiquement
Voici mon problème: quand je readd le gestionnaire d'événements à la page charge, il est en donnant une erreur cannot cast sender object
Code:
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
lorsque la la page est recharger en me donnant une erreur ou
Impossible de coulée objet de type 'ASP.products_aspx' de type 'System.Web.UI.WebControls.LinkButton' Dim getLinkDetail Comme LinkButton = CType (expéditeur, LinkButton)
@Aristos: au moins 15 reps sont nécessaires pour upvote: http://meta.stackexchange.com/questions/41347/why-is-15-reputation-required-to-upvote Mais le PO devrait accepter des réponses et devrait faire plus d'effort en posant des questions lisibles. –
@Tim merci pour la note. – Aristos