Ok, I understand that, but I don't know what to do about it. Would you
please take a look at another post that I just made to this group with
the subject "Composite control building architecture problem". It has a
much more complete example of my problem with all the code that goes
along with it.
thanks for the reply,
Aaron
NoOne wrote:
>
> You have to note when CreateChildControls is called in the page lifecycle
> and be careful what you do there, especially if your control is put onto a
> web form as opposed to added in the codebehind logic. If its called early in
> the page construction then IsPostBack might not be set yet, which would
> explain why you were getting duplicated items. Also this would also explain
> why your selected changed event is not getting fired.
>
> "Aaron Prohaska" <> wrote in message
> news:.. .
> > I have an update to this problem. In the CreateChildControls method I
> > add the line
> >
> > this.rearTravelList.ClearSelection();
> >
> > so the code looks like this.
> >
> > CreateChildControls()
> > {
> > this.rearTravelList =
> > (DropDownList)Page.FindControl("rearTravelList");
> >
> > this.rearTravelList.ClearSelection();
> > this.rearTravelList.AutoPostBack = true;
> > this.rearTravelList.SelectedIndexChanged += new EventHandler(
> > this.SelectedRearTravelChanged );
> > if ( !Page.IsPostBack )
> > this.BuildRearTravelList();
> > }
> >
> > After adding the new line of code I can now select the new item and it
> > works correctly in selecting the item in the dropdownlist and doesn't
> > give me the multiple items selected error, but in the process of doing
> > this the SelectedIndexChanged event is not being fired.
> >
> > Can anyone explain this?
> >
> > Aaron
> >
> > Aaron Prohaska wrote:
> > >
> > > I'm having the problem with this drop down list on postback. For some
> > > reason both the ListItems get selected when I change the selected item.
> > > Using the code below I'm building the drop down list in the overriden
> > > CreateChildControls method and setting the selected item. Then when I
> > > change the item in the drop down list the list is rebuilt from
> > > viewstate, but the initial item is still selected causing the error
> > > below.
> > >
> > > I also have a number of other drop down lists in this custom control
> > > that work just fine, so its a bit confusing to me why only this one
> > > doesn't work.
> > >
> > > Can anyone see what might be causing this?
> > >
> > > ERROR:
> > >
> > > System.Web.HttpException: A DropDownList cannot have multiple items
> > > selected.
> > >
> > > CODE:
> > >
> > > CreateChildControls()
> > > {
> > > this.rearTravelList =
> > > (DropDownList)Page.FindControl("rearTravelList");
> > >
> > > this.rearTravelList.AutoPostBack = true;
> > > this.rearTravelList.SelectedIndexChanged += new EventHandler(
> > > this.SelectedRearTravelChanged );
> > > if ( !Page.IsPostBack )
> > > this.BuildRearTravelList();
> > > }
> > >
> > > private void BuildRearTravelList()
> > > {
> > > ListItem xCountryItem = new ListItem();
> > > ListItem freeRideItem = new ListItem();
> > >
> > > xCountryItem.Text = "X Country 2.25-4.49in";
> > > xCountryItem.Value = RidingStyle.XC.ToString();
> > >
> > > freeRideItem.Text = "Free Ride 4.5-6in";
> > > freeRideItem.Value = RidingStyle.FR.ToString();
> > >
> > > this.rearTravelList.Items.Add( xCountryItem );
> > > this.rearTravelList.Items.Add( freeRideItem );
> > >
> > > this.SetSelectedItem( this.rearTravelList,
> > > this.RidingStyle.ToString()
> > > );
> > > }
> > >
> > > private void SetSelectedItem(ListControl list, string textValue)
> > > {
> > > list.ClearSelection();
> > > ListItem item = list.Items.FindByValue( textValue );
> > > if ( item != null )
> > > item.Selected = true;
> > > }
|