drop down list not selecting what I ask it to ... any ideas?

E

Eskimo

....
if (Page.IsPostBack == false)
{

ddlserver_id.DataTextField = "server_ip_address";
ddlserver_id.DataValueField = "server_id";
ddlserver_id.DataSource = <retrieved data set>;
ddlserver_id.DataBind();

//....

Page.DataBind();

} // if (Page.IsPostBack == false)
....
in a property in the code behind for the web page containing the
dropdownlist...

set
{

<object.server_id that pertains to proprietary code> = value;

<retrieve the data for object.server_id here>

ListItem li = new ListItem(<display field
here>,<object.server_id.ToString()>);
ddlserver_id.SelectedIndex = ddlserver_id.Items.IndexOf(li);

} // set
....
<object.server_id> etc. are not xml tags - just my post syntax...
 
T

Teemu Keiski

You can't search from DDL by creating a new ListItem, because that ListItem
isn't in the collection. Instead you need to search with FindByValue or
FindByText methods of ListItemCollwection (Items property). That is assuming
that item you look for is already in Items after databinding.

For example:

ddlserver_id.SelectedIndex =
ddlserver_id.Items.IndexOf(ddlserver_id.Items.FindByValue(<object.server_id.ToString()>));

However, if your scenario is to add item to the Items if it doesn't exist
yet, you can utilize same technique, check the existenmce with FindByValue
and then add if FindByValue returns null (no ListItem found with given
value) If you just add item despite anything, then don't do existence check
but just add:

ddlserver_id.Items.Add(li);
 
E

Eskimo

This code doesn't work:

ListItem li = ddlserver_id.Items.FindByValue(value.ToString());
ddlserver_id.SelectedIndex = ddlserver_id.Items.IndexOf(li);

ddlserver_id.Items.FindByValue returns the index (in debugger, quickwatch
shows ddlserver_id.SelectedIndex=0 before, 2 after)
but it doesn't position itself.

Stumped...
 
E

Eskimo

I figured it out
....

if (Page.IsPostBack == false)
{

ddlserver_id.DataTextField = "server_ip_address";
ddlserver_id.DataValueField = "server_id";
ddlserver_id.DataSource = <retrieve dataset here>;
ddlserver_id.DataBind();
// ! I had SetupEditMode(); here! but ...move it below Page.DataBind(); worked
Page.DataBind();

SetupEditMode();

} // if (Page.IsPostBack == false)

....
set
{

ListItem li =
ddlserver_id.Items.FindByValue(value.ToString());
ddlserver_id.SelectedIndex = ddlserver_id.Items.IndexOf(li);

} // set
....
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top