PUZZLE Getting DropDownList Index of Matching Value

  • Thread starter Thread starter Earl Teigrob
  • Start date Start date
E

Earl Teigrob

I want to write a function where I pass in a reference to a dropdownlist and
a "match value" and have it returns the index of the dropdownlist item that
matchs (or -1 if there is no match)

private int GetMatchingIndexOfDropDown(ref DropDownList d, string
MatchValue)
{
return [MatchingIndex]
}

I thought it would be super simple but screwed up my first attempt at it.
I thought that a simple foreach with a counter would solve this and it will
under some cercomstances...but not all.

I if use
ManagerDropDown.Items.Insert(0,new ListItem("--Select--",""));

to insert a value into a DropDownList after a databind, it gets iterated to
first but its index value is the largest value. Whoops! Now my simple
interation does not work!

FOR EXAMPLE

private int GetMatchingIndexOfDropDown(ref DropDownList d, string
MatchValue)

{

int i = 0;

foreach (ListItem li in d.Items)

{

if (li.Value == MatchValue)

return i;

i++;

}

return -1;

}



DOES NOT WORK!

So How Do I Do This??? How Do I get the Index Value of the current List
Item??? Or am I on the wrong track...

Thanks

Earl
 
Thanks

I used this to create

private int GetMatchingIndexOfDropDown(ref DropDownList d, string
MatchValue)

{

d.Items.FindByValue(MatchValue).Selected = true;

int i = d.SelectedIndex;

return i;

}



Steve C. Orr said:
This functionality is built into the DropDownList control.

Use the myddl.Items.FindByValue(iMyID) method.
(or the FindByText method)

Here's more info:
http://msdn.microsoft.com/library/d...olslistitemcollectionclassfindbytexttopic.asp

--
I hope this helps,
Steve C. Orr, MCSD
http://Steve.Orr.net


Earl Teigrob said:
I want to write a function where I pass in a reference to a dropdownlist and
a "match value" and have it returns the index of the dropdownlist item that
matchs (or -1 if there is no match)

private int GetMatchingIndexOfDropDown(ref DropDownList d, string
MatchValue)
{
return [MatchingIndex]
}

I thought it would be super simple but screwed up my first attempt at it.
I thought that a simple foreach with a counter would solve this and it will
under some cercomstances...but not all.

I if use
ManagerDropDown.Items.Insert(0,new ListItem("--Select--",""));

to insert a value into a DropDownList after a databind, it gets iterated to
first but its index value is the largest value. Whoops! Now my simple
interation does not work!

FOR EXAMPLE

private int GetMatchingIndexOfDropDown(ref DropDownList d, string
MatchValue)

{

int i = 0;

foreach (ListItem li in d.Items)

{

if (li.Value == MatchValue)

return i;

i++;

}

return -1;

}



DOES NOT WORK!

So How Do I Do This??? How Do I get the Index Value of the current List
Item??? Or am I on the wrong track...

Thanks

Earl
 
Earl,

The same case works perfectly for me..

ManagerDropDown.Items.Insert(0,new ListItem("--Select--",""));
this also will insert new item as first with with index value of 0.

Also you following fuction works for me..
private int GetMatchingIndexOfDropDown(ref DropDownList d, string
MatchValue)

{

int i = 0;


foreach (ListItem li in d.Items)

{

if (li.Value == MatchValue)

return i;

i++;

}

return -1;

}
 
Back
Top