Solved

Programmatically Select DropDownList Item

Posted on 2008-10-14
5
5,124 Views
Last Modified: 2013-12-17
Experts,

I have the following asp:dropdownlist: (see code snippet).
I am holding user addresses in my database.  The "State" column in the database is/will be updated using the same dropdownlist, so when a user selects 'AZ' from the dropdownlist a "2" will be sent to the database to be stored in the "State" column.

My problem is programmatically changing the selected item of the dropdownlist, based on what I pull from the database.  If I use ddlState.SelectedIndex = 4 (or whatever number within my range) it works just fine.  However I need to pull the # from the database.  I have tried all manner of things, and getting several different errors.  Here are a few things I've tried that aren't working.

1.  ddlState.SelectedIndex = myDataReader["State"];
Error: CS0266: Cannot implicitly convert type 'object' to 'int'. An explicit conversion exists (are you missing a cast?)

2. ddlState.SelectedIndex = Convert.ToInt32(myDataReader["State"]);
Error:System.Web.HttpException: Cannot have multiple items selected in a DropDownList.

3. ddlState.SelectedIndex = ddlState.Items.IndexOf(ddlState.Items.FindByValue(myDataReader["State"].ToString()));
No Error, but does nothing......Index 0 ends of being selected.

4. int i = myDataReader["State"];
    ddlState.Items[i].Selected = true;
Error:  System.Web.HttpException: Cannot have multiple items selected in a DropDownList.

Errors in 2 and 4 are happening I because Index 0 is Selected on Page Load, but I don't understand how this error is happening if the SelectedIndex is being changed before the page is refreshed on a postback?

Please offer advice.  I'm open to change the way I am doing this as well, if a better methodology exists.

Thanks,
Pete.
<asp:DropDownList ID="ddlState" runat="server">

     <asp:ListItem Value="0" Text="AL" />

     <asp:ListItem Value="1" Text="AK" />

     <asp:ListItem Value="2" Text="AZ" />

     <asp:ListItem Value="3" Text="AR" />

     <asp:ListItem Value="4" Text="CA" />

     <asp:ListItem Value="5" Text="CO" />

     //Rest of the 45 States

</asp:DropDownList>

Open in new window

0
Comment
Question by:P1ST0LPETE
  • 2
  • 2
5 Comments
 
LVL 13

Expert Comment

by:crazyman
ID: 22715372
Have you tried .SelectedValue
0
 
LVL 10

Author Comment

by:P1ST0LPETE
ID: 22715390
Found my answer:

int i = myDataReader["State"];
ddlState.SelectedIndex = i;
0
 
LVL 10

Accepted Solution

by:
P1ST0LPETE earned 0 total points
ID: 22715401
Correction:

int i = Convert.ToInt32(myDataReader["State"]);
ddlState.SelectedIndex = i;
0
 
LVL 13

Expert Comment

by:crazyman
ID: 22715449
I wouldnt save indexes, better of saving the id or code and using SelectedValue, what happens if you add another state in the middle then he indexes wont line up...
0
 
LVL 6

Expert Comment

by:esolve
ID: 22741208
I've just noticed that in your 2nd example you should call the ddlState.ClearSelection(); method to prevent this error from happening again.
0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This article describes relatively difficult and non-obvious issues that are likely to arise when creating COM class in Visual Studio and deploying it by professional MSI-authoring tools. It is assumed that the reader is already familiar with the cla…
More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

25 Experts available now in Live!

Get 1:1 Help Now