Problem getting value
-
I'm trying to access the value of a HtmlInputHidden inside a datalist, but I get "Object reference not set to an instance of an object" as an error when I try to call the value. Here is my code: Protected Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound Select Case e.Item.ItemType Case ListItemType.Item, ListItemType.AlternatingItem 'Dim row As DataRowView = CType(e.Item.DataItem, DataRowView) Dim TitleLink As HyperLink = CType(e.Item.FindControl("ProdTitleLink"), HyperLink) Dim TextLink As HyperLink = CType(e.Item.FindControl("ProdTextLink"), HyperLink) Dim prodID As HtmlInputHidden = CType(e.Item.FindControl("ProductID"), HtmlInputHidden) TextLink.NavigateUrl = "productDetails.aspx?catID=" & Request.QueryString("catID") & "Id" & prodID.Value TitleLink.NavigateUrl = "productDetails.aspx?catID=" & Request.QueryString("catID") & "Id" & prodID.Value End Select End Sub Code of Datalist:
Product
Qty
Price
-
I'm trying to access the value of a HtmlInputHidden inside a datalist, but I get "Object reference not set to an instance of an object" as an error when I try to call the value. Here is my code: Protected Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList1.ItemDataBound Select Case e.Item.ItemType Case ListItemType.Item, ListItemType.AlternatingItem 'Dim row As DataRowView = CType(e.Item.DataItem, DataRowView) Dim TitleLink As HyperLink = CType(e.Item.FindControl("ProdTitleLink"), HyperLink) Dim TextLink As HyperLink = CType(e.Item.FindControl("ProdTextLink"), HyperLink) Dim prodID As HtmlInputHidden = CType(e.Item.FindControl("ProductID"), HtmlInputHidden) TextLink.NavigateUrl = "productDetails.aspx?catID=" & Request.QueryString("catID") & "Id" & prodID.Value TitleLink.NavigateUrl = "productDetails.aspx?catID=" & Request.QueryString("catID") & "Id" & prodID.Value End Select End Sub Code of Datalist:
Product
Qty
Price
First, you didn't specify which line the expection is thrown on. I'm not really up to guessing, but I can see a glaring problem. In this code:
Dim TitleLink As HyperLink = CType(e.Item.FindControl("ProdTitleLink"), HyperLink)
Dim TextLink As HyperLink = CType(e.Item.FindControl("ProdTextLink"), HyperLink)
Dim prodID As HtmlInputHidden = CType(e.Item.FindControl("ProductID"), HtmlInputHidden)you're assuming that the call to FindControl actually returns a control. If you're trying to use the TitleLink, TextLink, and prodID objects, and FindControl did NOT find the controls you THINK they did, you'll get the error you're talking about. Check the return values/objects of methods before you attempt to use those values/objects. You might not get back what you think you should be getting.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007 -
First, you didn't specify which line the expection is thrown on. I'm not really up to guessing, but I can see a glaring problem. In this code:
Dim TitleLink As HyperLink = CType(e.Item.FindControl("ProdTitleLink"), HyperLink)
Dim TextLink As HyperLink = CType(e.Item.FindControl("ProdTextLink"), HyperLink)
Dim prodID As HtmlInputHidden = CType(e.Item.FindControl("ProductID"), HtmlInputHidden)you're assuming that the call to FindControl actually returns a control. If you're trying to use the TitleLink, TextLink, and prodID objects, and FindControl did NOT find the controls you THINK they did, you'll get the error you're talking about. Check the return values/objects of methods before you attempt to use those values/objects. You might not get back what you think you should be getting.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007 -
There is no problem finding the TitleLink or the TextLink and to set the value for it. It's only when I start looking for the HtmlInputHidden!!!
This question really belongs in the ASP.NET Forum. It has nothing to do with VB.NET. Now, yo answer you're question. Find controls only works with ASP.NET server-side controls. It will NOT find an HTML control on the form, which is what you used. I have no idea if you can use an ASP.NET TextBox control and change it's state to Hidden. You'll have to ask in the ASP.NET forum or just experiment with it.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007