> This apparently means that the SelectedIndex for each
> ddl is also a pointer pointing to the same location as well.
SelectedIndex is not a pointer, it is a property and when you set or get it,
some code runs.
When you "set" it, asp.net goes to the Items collection and mark the item as
"Selected" be setting li.Selected = true.
When you "get" the SelectedIndex on another ddl, asp.net goes to the Items
collection, finds the item with Selected=true and returns it's index. This
causes the effect you observed and successfully fixed.
--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net
"S_K" <> wrote in message
news: oups.com...
> On Nov 14, 8:29 am, S_K <steve_kers...@yahoo.com> wrote:
>> On Nov 14, 2:52 am, "Eliyahu Goldin"
>>
>>
>>
>>
>>
>> <REMOVEALLCAPITALSeEgGoldD...@mMvVpPsS.org> wrote:
>> > Do all ddls share the same items?
>>
>> > When you set the SelectedIndex property, it actually sets the Selected
>> > property of the item you select. Thus the same item becomes selected
>> > in all
>> > ddls it is participating.
>>
>> > The solution is to replicate the item collection for every single ddl.
>>
>> > --
>> > Eliyahu Goldin,
>> > Software Developer
>> > Microsoft MVP
>> > [ASP.NET]http://msmvps.com/blogs/egoldinhttp://usableasp.net
>>
>> > "S_K" <steve_kers...@yahoo.com> wrote in message
>>
>> >news: oups.com...
>>
>> > > Hi,
>>
>> > > I have a list of 6 DropDownList boxes, from DropDownList1 to
>> > > DropDownList6, and I'm changing the SelectedIndex of each using a
>> > > foreach loop as follows:
>>
>> > > foreach(PaymentReqDisplay thispayment in listPaymentReqDisplay)
>> > > {
>> > > if ((string)thispayment.TaxType == "FIT")
>> > > this.DropDownList1.SelectedIndex =
>> > > (int)thispayment.PaymentRequirementID - 1;
>> > > if ((string)thispayment.TaxType == "FUI")
>> > > this.DropDownList2.SelectedIndex =
>> > > (int)thispayment.PaymentRequirementID - 1;
>> > > if ((string)thispayment.TaxType == "SIT")
>> > > this.DropDownList3.SelectedIndex =
>> > > (int)thispayment.PaymentRequirementID - 1;
>> > > if ((string)thispayment.TaxType == "SUI")
>> > > this.DropDownList4.SelectedIndex =
>> > > (int)thispayment.PaymentRequirementID - 1;
>> > > if ((string)thispayment.TaxType == "ETF")
>> > > this.DropDownList5.SelectedIndex =
>> > > (int)thispayment.PaymentRequirementID - 1;
>> > > if ((string)thispayment.TaxType == "SDI")
>> > > this.DropDownList6.SelectedIndex =
>> > > (int)thispayment.PaymentRequirementID - 1;
>> > > }
>>
>> > > The problem is that when I change, say, DropDownList4.SelectedIndex =
>> > > 3; every other DropDownList's SelectedIndex changes as well!?
>>
>> > > What am I doing wrong?
>>
>> > > Thanks much for your help.
>> > > Steve- Hide quoted text -
>>
>> > - Show quoted text -
>>
>> So you are saying that by setting the SelectIndex of (say) the first
>> ddl ALL of the ddls in that group get set along with it?
>> So how do I replicate the item collection for every single ddl? I
>> don't understand what you mean. Could you give me a code example?
>>
>> Thanks so much for your help.
>> Steve- Hide quoted text -
>>
>> - Show quoted text -
>
> I FOUND THE PROBLEM!!!
>
> This is what happend.
> In my code I called a method to fill the Items value for each
> DropDownList using a ListItem as in the code:
>
> for (int i = 0; i < listPaymentReq.Count; i++)
> {
> ListItem li = new
> ListItem(listPaymentReq[i].Payment_Req_Code.ToString(),
> listPaymentReq[i].Payment_Req_ID.ToString());
>
> DropDownList1.Items.Insert(i, li);
> DropDownList2.Items.Insert(i, li);
> DropDownList3.Items.Insert(i, li);
> .
> .
> . }
>
> Note that the "li" is a pointer and I'm inserting the SAME Items value
> into each ddl! This apparently means that the SelectedIndex for each
> ddl is also a pointer pointing to the same location as well.
>
> You learn something new everyday.
>
> thanks for the help.
>
> Steve
>