Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1198
  • Last Modified:

FindByValue() error? Object - Object reference not set to an instance of an object.

Ok,
  I've been coding for the past few days without a hitch and then all of a sudden I run across this problem.
I have a drop down list that gets populated with a dataset that is returned from my business tier.

I've debugged this thing for 5 hours and I still cant figure it out. I've tested the dataset to make sure that it gets populated. I've checked to make sure that the page will load properly if I just bind the Dataset to the Drop Down List. Everything works fine when I'm loading the Dataset, binding it to the Drop Down list, but when I try to do a dropdownlist.items.findbyvalue("12345")   (where 12345 is a product # in the drop down list) I get a: "Object reference not set to an instance of an object.".

I've tried hardcoding the value (that I KNOW for a fact is in the DropDownList), I"ve tried dynamically setting it through the Ds, I've tried weird looping options. I've even tried removing the DropDownList and replacing i with a listbox. But again, my dreams and aspirations are cursed by this darn error.

Here is the code i'm using:

        Dim DS As New DataSet()
        Dim DS2 As New DataSet()
        Dim itemNumb As String

        m_bus = New business()

        DS = m_bus.ReturnAvailableItems()
        DS2 = m_bus.ReturnCurrentFeaturedItems()

        ddlFeat1.DataSource = DS
        ddlFeat1.DataTextField = "ITEMDESC"
        ddlFeat1.DataValueField = "item_number"
        ddlFeat1.DataBind()

        itemNumb = DS2.Tables(0).Rows(0)("item_number")
        ddlFeat1.Items.FindByValue(DS2.Tables(0).Rows(0)("item_number")).Selected = True

The last line is where i get the error.

Does anyone see what might be causing this?
0
sneidig
Asked:
sneidig
  • 3
  • 3
1 Solution
 
ihenryCommented:
you can do this to avoid the error,

If Not IsDbNull(itemNumb)
   If ddlFeat1.Items.Count > 0 Then
      ddlFeat1.Items.FindByValue(itemNumb).Selected = True
   End If
End If
0
 
sneidigAuthor Commented:
I know that the ddlFeat1 is getting populated. I know that the ItemNumb is populated.

And i still get the error. That seems to be my issue.

Thanks again.
0
 
ihenryCommented:
Or that might because there's no ddlFeat1.Items.FindByValue(itemNumb) found.

Try this to check if item with value equal itemNumb exists.

Dim ListItem item As ListItem = ddlFeat1.Items.FindByValue(itemNumb)
If Not IsNull( item)
   item.Selected = True
End If
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
sneidigAuthor Commented:
it says the object is null.

So check it out though...

I comment out the ".findbyvalue()" and just let the page load.

The page then loads up all three DropDownLists perfectly.

If i look at the source, the data is found in there.

OH jeez... i have no idea...
0
 
ihenryCommented:

Right click on the browser and view its source code. Do you see value there?
0
 
sneidigAuthor Commented:
I started doing a trace ... and I found my problem (your code helped me thinka bout it in a different way so I'll reward you the points).

The problem was that the item numbers in the DB are stored as Varchar(20). When i'd get the data from one table it would return an item number that looked like this "11355" and then the other tablle (which was what the DDL was bound to) looked like this "11355          "   It had a ton of white space.

I trimmed it in SQL Server and blammo, it works.

Thanks for the help though.

Now if i could only get these last 6 hours back!
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now