explanation of when need to repopulate control

T

TS

So what is happening is the same thing that was happening, the top most
parent's event handler is called correctly, but its child's event is
envoking the parent's event handler (the same one).

TS said:
Hey Steven, I have a problem while working with the same DataList control.
That one problem that caused the wrong event handler to get called is
happening now. I am working on a different project using the same control
that i got finished on the other project and trying to implement on this new
project, and it is set up almost the same. The only difference is that on
this new one, i have added a postback step before the custom datalist gets
loaded.

Any ideas as why the wrong event handler is getting called?

thanks

Steven Cheng said:
You're welcome TS.

Glad that you've overcome the problem.

Regards,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)
--------------------
| From: "TS" <[email protected]>
| References: <[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<unRs#[email protected]>
<[email protected]>
<#[email protected]>
<[email protected]>
<#[email protected]>
<[email protected]>
| Subject: Re: explanation of when need to repopulate control
| Date: Mon, 8 Aug 2005 12:50:32 -0500
| Lines: 1445
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <[email protected]>
| Newsgroups: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| Xref: TK2MSFTNGXA01.phx.gbl
microsoft.public.dotnet.framework.aspnet.buildingcontrols:4014
| X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.buildingcontrols
|
| Well you were right that it had something to do with the custom control.
The
| datalist was trying to load itself during page load. i put the code in
Init,
| and it worked.
|
| thanks steven
|
| | > Thanks for your followup TS.
| >
| > So can I say that currently your custom webcontrol(not template list
| > control) can correctly be added both statically and dynamically in the
| > normal DataList or Repeater controls (asp.net buildin ) , but have some
| > problem for postback events when added in your custom list control?
| >
| > If so, we should keep focus on the custom datalist control. Has it any
| > problems when we nest some asp.net buildin controls in it? Would you try
| > making a simplified version of your custom datalist control so that we
can
| > have a view to see whether there is anything wrong in it. Also,
it'll
be
| > helpful you also provide the complete code that you dynamically add
| control
| > into the datalist (through reflection).
| >
| > Thanks,
| >
| > Steven Cheng
| > Microsoft Online Support
| >
| > Get Secure! www.microsoft.com/security
| > (This posting is provided "AS IS", with no warranties, and confers no
| > rights.)
| >
| > --------------------
| > | From: "TS" <[email protected]>
| > | References: <[email protected]>
| > <[email protected]>
| > <[email protected]>
| > <[email protected]>
| > <unRs#[email protected]>
| > <[email protected]>
| > <#[email protected]>
| > <[email protected]>
| > | Subject: Re: explanation of when need to repopulate control
| > | Date: Fri, 5 Aug 2005 17:19:23 -0500
| > | Lines: 1298
| > | X-Priority: 3
| > | X-MSMail-Priority: Normal
| > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > | Message-ID: <#[email protected]>
| > | Newsgroups: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > | Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP15.phx.gbl
| > | Xref: TK2MSFTNGXA01.phx.gbl
| > microsoft.public.dotnet.framework.aspnet.buildingcontrols:4003
| > | X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > |
| > | I have a new problem now. I have figured out that the cause is the
same
| > | reason. If its in the custom DataList, it doesn't work, else it does
| work.
| > |
| > | The scenario:
| > | After the initial page load, you enter data into controls and hit
submit
| > | button, the process is as follows:
| > | Page_Load
| > | DataList's OnLoad
| > | Composite Control's OnLoad
| > | Submit button's OnClick - At this point, the controls in the composite
| > | control have no listitems and no selectedValue properties.
| > |
| > | I have statically added the composite control onto the same page as
the
| > | dynamic one, so here is the process in this scenario:
| > | Page_Load
| > | Composite Control's OnLoad (The one whose parent is Page)
| > | DataList's OnLoad
| > | Composite Control's OnLoad (The one whose parent is the Custom
DataList)
| > | Submit button's OnClick - At this point, the controls in the
statically
| > | declared composite control have listitems and have values for
| > selectedValue
| > | properties.
| > |
| > | So the same control at the same time - the one outside the custom
| Datalist
| > | has its controls' state set up correctly, the ones inside does not.
| > |
| > | So the same reason is at play here. Maybe since i am dynamically
| creating
| > | the class using reflection (Assembly.CreateInstance()) that has
| something
| > to
| > | do with it?
| > |
| > | Please help mr. Cheng.
| > |
| > | Thank you very much!
| > |
| > | TS
| > |
| > |
| > |
| > | | > | > Hi TS,
| > | >
| > | > First, I'm glad that you've got your composite control work, all the
| > | > dropdownlist's postback events can fire correctly,yes?
| > | >
| > | > As for the new problem you encountered when adding your composite
| > control
| > | > into DataList's item, is the DataList the asp.net's buildin DataList
| > | > control? And since you mentioned that you dynamically add your
| control
| > | > into it, how do you dynamically add your custom control? Will there
| > occur
| > | > problem if you statically add your control into DataList?
| > | >
| > | > Thanks,
| > | >
| > | > Steven Cheng
| > | > Microsoft Online Support
| > | >
| > | > Get Secure! www.microsoft.com/security
| > | > (This posting is provided "AS IS", with no warranties, and confers
no
| > | > rights.)
| > | >
| > | > --------------------
| > | > | From: "TS" <[email protected]>
| > | > | References: <[email protected]>
| > | > <[email protected]>
| > | > <[email protected]>
| > | > <[email protected]>
| > | > <unRs#[email protected]>
| > | > <[email protected]>
| > | > | Subject: Re: explanation of when need to repopulate control
| > | > | Date: Wed, 3 Aug 2005 19:07:16 -0500
| > | > | Lines: 1153
| > | > | X-Priority: 3
| > | > | X-MSMail-Priority: Normal
| > | > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > | > | Message-ID: <#[email protected]>
| > | > | Newsgroups:
| microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > | > | Path:
| TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP14.phx.gbl
| > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols:3989
| > | > | X-Tomcat-NG:
| microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | > |
| > | > | Well Steve, I am almost done. My control works well, except its
not
| in
| > | the
| > | > | framework i just mentioned. Adding my control dynamically to the
| > | > datalist's
| > | > | item may be the root of the cause. i've made sure all custom
| controls
| > | > | implmenet INamingContainer & I think all controls have their id's
| set,
| > | so
| > | > | what else can i do?
| > | > |
| > | > | thanks a bunch
| > | > |
| > | > | | > | > | > I have figured the cause of the problem, sort of. My main
control
| > was
| > | > | being
| > | > | > loaded dynamically during a custom data list control's
| ItemDataBound
| > | > | event,
| > | > | > and then added to the e.item.controls collection. Once I removed
| it
| > | from
| > | > | > here, the correct event was called in my control. the problem
is i
| > | need
| > | > to
| > | > | > keep it where it is because of the way the page works.
| > | > | >
| > | > | > I tried to add INamingContainer to the custom Datalist, but that
| > | didn't
| > | > | > help. Any ideas what could make this happen?
| > | > | >
| > | > | > thanks so much, i know i'm being a pain, but i'm stuck!
| > | > | >
| > | > | > This is the custom DataLists' event:
| > | > | > protected override void
OnItemDataBound(DataListItemEventArgs
e)
| > | > | >
| > | > | > {
| > | > | >
| > | > | > base.OnItemDataBound(e);
| > | > | >
| > | > | > Parameter parameter = (Parameter)e.Item.DataItem;
| > | > | >
| > | > | > try
| > | > | >
| > | > | > {
| > | > | >
| > | > | > Control control;
| > | > | >
| > | > | > if(parameter.Type == ParameterType.Control)
| > | > | >
| > | > | > control = this.Page.LoadControl(parameter.ControlPath);
| > | > | >
| > | > | > else
| > | > | >
| > | > | > {
| > | > | >
| > | > | > Assembly assembly = parameter.Assembly;
| > | > | >
| > | > | > if(assembly == null)
| > | > | >
| > | > | > {
| > | > | >
| > | > | > // The control didn't declare its own assembly, so use the
| report's
| > | > | > ControlsAssembly
| > | > | >
| > | > | > assembly = this.ControlsAssembly;
| > | > | >
| > | > | > // Ther report's ControlsAssembly is null, so use current page's
| > | > assembly
| > | > | >
| > | > | > if(assembly == null)
| > | > | >
| > | > | > assembly = this.Page.GetType().BaseType.Assembly;
| > | > | >
| > | > | > }
| > | > | >
| > | > | >
| > | > | > control = (Control)
| > | assembly.CreateInstance(parameter.ControlTypeName);
| > | > | >
| > | > | > }
| > | > | >
| > | > | > control.ID = parameter.Name;
| > | > | >
| > | > | > // Set up all the properties of this control from the
| > | > parameter.properties
| > | > | >
| > | > | > foreach(DictionaryEntry de in parameter.Properties)
| > | > | >
| > | > | > SetProperty(de.Key.ToString(), de.Value.ToString(), control);
| > | > | >
| > | > | >
| > | > | > e.Item.Controls.Add(control);
| > | > | >
| > | > | > }
| > | > | >
| > | > | > catch (Exception ex)
| > | > | >
| > | > | > {
| > | > | >
| > | > | > throw new ApplicationException("Unable to render criteria.
Reason:
| > " +
| > | > | > ex.Message, ex);
| > | > | >
| > | > | > }
| > | > | >
| > | > | > }
| > | > | >
| > | > | > | > | > | > > In testing, i removed the main parent dropdown and only left
the
| 2
| > | > below
| > | > | > it.
| > | > | > > this time, the same scenario happened...when the child
dropdown
| > list
| > | > | > > autopostsback, it's immediate parent's selectedindexchanged
| event
| > | > fires!
| > | > | I
| > | > | > 'm
| > | > | > > starting to pull my hair out now...I"m stuck!
| > | > | > >
| > | > | > > please help superman
| > | > | > >
| > | > | > > | > | > | > > > Another problem:
| > | > | > > >
| > | > | > > > while i'm waiting on your remark to my last post, i removed
| the
| > | sub
| > | > | > > > composite controls from my composite control so that there
is
| > only
| > | > | drop
| > | > | > > down
| > | > | > > > lists on it. During CreateChildcontrols, i load the main
drop
| > down
| > | > | using
| > | > | > > > databind. When the page is sent to browser for the first
time,
| i
| > | > have
| > | > | my
| > | > | > > > main drop down filled. I then select an item and its
| > | > | > SelectedIndexChanged
| > | > | > > > fires and populates the send drop down list. Then when i
| select
| > an
| > | > | item
| > | > | > > from
| > | > | > > > it, it posts back, and the event that gets called is the
| > | main(first)
| > | > | > > > dropdown list's SelectedIndexChanged event, which then
| > | re-populates
| > | > | the
| > | > | > > > second drop down list, then the control returns to the
browser
| > | (The
| > | > | > > > SelectedIndexChanged event never fired for the 2nd
dropdown's
| > | > changed
| > | > | > > > event.???
| > | > | > > >
| > | > | > > > thanks again
| > | > | > > >
| > | > | > > > using System;
| > | > | > > >
| > | > | > > > using System.Collections.Specialized;
| > | > | > > >
| > | > | > > > using System.Web.UI;
| > | > | > > >
| > | > | > > > using System.Web.UI.WebControls;
| > | > | > > >
| > | > | > > > using System.Text;
| > | > | > > >
| > | > | > > > using OperationsTeams.Business;
| > | > | > > >
| > | > | > > > using OperationsTeams.Data;
| > | > | > > >
| > | > | > > > using OperationsTeams.Reporting;
| > | > | > > >
| > | > | > > > using OperationsTeams.Reporting.WebControls;
| > | > | > > >
| > | > | > > > namespace OperationsTeams.Web.ReportControls
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > /// <summary>
| > | > | > > >
| > | > | > > > /// Summary description for FiscalAgentHierarchy.
| > | > | > > >
| > | > | > > > /// </summary>
| > | > | > > >
| > | > | > > > public class FiscalAgentHierarchy : WebControl,
| > | > | IReportParameterControl,
| > | > | > > > INamingContainer
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > public FiscalAgentHierarchy()
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > Parameters.Add(new Parameter("@SchoolYear"));
| > | > | > > >
| > | > | > > > Parameters.Add(new Parameter("@ReportingGroup"));
| > | > | > > >
| > | > | > > > Parameters.Add(new Parameter("@FiscalAgentID"));
| > | > | > > >
| > | > | > > > Parameters.Add(new Parameter("@FundingSourceID"));
| > | > | > > >
| > | > | > > > Parameters.Add(new Parameter("@ProviderID"));
| > | > | > > >
| > | > | > > > Parameters.Add(new Parameter("@SiteID"));
| > | > | > > >
| > | > | > > > Parameters.Add(new Parameter("@ClassID"));
| > | > | > > >
| > | > | > > > Parameters["@SchoolYear"].Value = 2006;
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > >
| > | > | > > > #region Events
| > | > | > > >
| > | > | > > > protected override void OnLoad(EventArgs e)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > base.OnLoad (e);
| > | > | > > >
| > | > | > > >
| > | > | > > > // The last state of controls from viewstate is now loaded
| > (Before
| > | > the
| > | > | > > > client data is processed)
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > >
| > | > | > > > protected override void OnPreRender(EventArgs e)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > base.OnPreRender (e);
| > | > | > > >
| > | > | > > > // The controls now have the client values from the the last
| > | > postback
| > | > | > > >
| > | > | > > > // ddlFundingSource.Visible = FundingSourceVisible;
| > | > | > > >
| > | > | > > > // ddlProviders.Visible = ProviderVisible;
| > | > | > > >
| > | > | > > > // ddlSites.Visible = SiteVisible;
| > | > | > > >
| > | > | > > > // ddlClasses.Visible = ClassVisible;
| > | > | > > >
| > | > | > > > // ddlSites.Items.Add(new ListItem("help","1"));
| > | > | > > >
| > | > | > > > // ddlSites.Items.Add(new ListItem("me","2"));
| > | > | > > >
| > | > | > > > // ddlSites.Visible = true;
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > private void
| > rysReportingYearSelector_ReportingYearChanged(object
| > | > | > sender,
| > | > | > > > EventArgs e)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > // this.LoadFundingSource();
| > | > | > > >
| > | > | > > > // this.LoadProviders();
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > private void fasFiscalAgent_FiscalAgentChanged(object
sender,
| > | > | EventArgs
| > | > | > e)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > this.LoadFundingSource();
| > | > | > > >
| > | > | > > > this.LoadProviders();
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > private void ddlFundingSource_SelectedIndexChanged(object
| > sender,
| > | > | > > EventArgs
| > | > | > > > e)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > LoadSites();
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > private void ddlProviders_SelectedIndexChanged(object
sender,
| > | > | EventArgs
| > | > | > e)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > LoadSites();
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > private void ddlSites_SelectedIndexChanged(object sender,
| > | EventArgs
| > | > e)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > LoadClasses();
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > #endregion
| > | > | > > >
| > | > | > > > protected override void CreateChildControls()
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > this.ddlFundingSource = new DropDownList();
| > | > | > > >
| > | > | > > > this.ddlProviders = new DropDownList();
| > | > | > > >
| > | > | > > > this.ddlSites = new DropDownList();
| > | > | > > >
| > | > | > > > this.ddlClasses = new DropDownList();
| > | > | > > >
| > | > | > > > ddlFundingSource.ID = FundingSourceControlId;
| > | > | > > >
| > | > | > > > ddlProviders.ID = ProvidersControlId;
| > | > | > > >
| > | > | > > > ddlSites.ID = SitesControlId;
| > | > | > > >
| > | > | > > > ddlClasses.ID = ClassesControlId;
| > | > | > > >
| > | > | > > >
| > | > | > > > LoadProviders();
| > | > | > > >
| > | > | > > > // start containing table
| > | > | > > >
| > | > | > > > this.Controls.Add(WebHelper.MakeLiteral("<table
cellpadding=0
| > | > | > > > cellspacing=0><tr><td>"));
| > | > | > > >
| > | > | > > >
| > | > | > > >
this.Controls.Add(WebHelper.MakeLiteral( said:
| > | > | > > >
| > | > | > > > // this.Controls.Add(rysReportingYearSelector);
| > | > | > > >
| > | > | > > >
| this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > | > | > > >
| > | > | > > >
| this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > | > | > > >
| > | > | > > >
this.Controls.Add(WebHelper.MakeLiteral( said:
| > | > | > > >
| > | > | > > > // this.Controls.Add(fasFiscalAgent);
| > | > | > > >
| > | > | > > >
| this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > | > | > > >
| > | > | > > >
| this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > | > | > > >
| > | > | > > >
| this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>Funding
| > | > | > > > Source</td><td>"));
| > | > | > > >
| > | > | > > > this.Controls.Add(ddlFundingSource);
| > | > | > > >
| > | > | > > >
| this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > | > | > > >
| > | > | > > >
| this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > | > | > > >
| > | > | > > >
| > | > | > >
| > | > | >
| > | > |
| > | >
| > |
| >
|
this.Controls.Add(WebHelper.MakeLiteral( said:
| > | > | > > > );
| > | > | > > >
| > | > | > > > this.Controls.Add(ddlProviders);
| > | > | > > >
| > | > | > > >
| this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > | > | > > >
| > | > | > > >
| this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > | > | > > >
| > | > | > > >
| > | > | >
| > | >
| >
this.Controls.Add(WebHelper.MakeLiteral( said:
| > | > | > > >
| > | > | > > > this.Controls.Add(ddlSites);
| > | > | > > >
| > | > | > > >
| this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > | > | > > >
| > | > | > > >
| this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > | > | > > >
| > | > | > > >
| > | > | > >
| > | > | >
| > | > |
| > | >
| > |
| >
|
this.Controls.Add(WebHelper.MakeLiteral( said:
| > | > | > > >
| > | > | > > > this.Controls.Add(ddlClasses);
| > | > | > > >
| > | > | > > >
| this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > | > | > > >
| > | > | > > > // end containing table
| > | > | > > >
| > | > | > > >
| this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > | > | > > >
| > | > | > > > ddlFundingSource.SelectedIndexChanged += new
| > | > | > > > EventHandler(ddlFundingSource_SelectedIndexChanged);
| > | > | > > >
| > | > | > > > ddlProviders.SelectedIndexChanged += new
| > | > | > > > EventHandler(ddlProviders_SelectedIndexChanged);
| > | > | > > >
| > | > | > > > ddlSites.SelectedIndexChanged += new
| > | > | > > > EventHandler(ddlSites_SelectedIndexChanged);
| > | > | > > >
| > | > | > > > ddlFundingSource.AutoPostBack =
ddlProviders.AutoPostBack
=
| > | > | > > > ddlSites.AutoPostBack = true;
| > | > | > > >
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > private void LoadFundingSource()
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > int fiscalAgentId =
| > 1;//this.fasFiscalAgent.SelectedFiscalAgentId;
| > | > | > > >
| > | > | > > >
| > | > | > > > if(fiscalAgentId != int.MinValue)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > FundingSourceVisible = true;
| > | > | > > >
| > | > | > > > this.ddlFundingSource.DataSource =
| > | > | > FiscalAgentFunding.Find(fiscalAgentId);
| > | > | > > >
| > | > | > > > this.ddlFundingSource.DataTextField = "ShortDescription";
| > | > | > > >
| > | > | > > > this.ddlFundingSource.DataValueField = "CodeId";
| > | > | > > >
| > | > | > > > this.ddlFundingSource.DataBind();
| > | > | > > >
| > | > | > > > if(this.ddlFundingSource.Items.Count > 1)
| > | > | > > >
| > | > | > > > this.ddlFundingSource.Items.Insert(0, new
| ListItem(string.Empty,
| > | > | > > > string.Empty));
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > else
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > FundingSourceVisible = false;
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > private void LoadProviders()
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > int fiscalAgentId =
1;//fasFiscalAgent.SelectedFiscalAgentId;
| > | > | > > >
| > | > | > > > if(fiscalAgentId != int.MinValue)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > // ddlSites.Items.Add(new ListItem("help","1"));
| > | > | > > >
| > | > | > > > // ddlSites.Items.Add(new ListItem("me","2"));
| > | > | > > >
| > | > | > > >
| > | > | > > >
| > | > | > > > ProviderVisible = true;
| > | > | > > >
| > | > | > > > // are these dates correct???????????????????????????
| > | > | > > >
| > | > | > > > ddlProviders.DataSource =
| > FiscalAgentProvider.Find(fiscalAgentId,
| > | > new
| > | > | > > > DateTime(2005,7,1), new
| > | > | > > >
| > | > |
| > DateTime(2006,6,30));//rysReportingYearSelector.ReportingYearStartDate,
| > | > | > > > rysReportingYearSelector.ReportingYearEndDate); //
| > | > | > > >
| > | > | > > > ddlProviders.DataTextField = "ProviderName";
| > | > | > > >
| > | > | > > > ddlProviders.DataValueField = "ProviderId";
| > | > | > > >
| > | > | > > > ddlProviders.DataBind();
| > | > | > > >
| > | > | > > > ddlProviders.Items.Insert(0, new ListItem(string.Empty,
| > | > | string.Empty));
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > else
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > this.ddlProviders.Items.Clear();
| > | > | > > >
| > | > | > > > ProviderVisible = false;
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > // LoadSites();
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > private void LoadSites()
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > if(ddlProviders.SelectedValue != string.Empty)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > // Load the Site search parameters.
| > | > | > > >
| > | > | > > > SiteFindArgs siteFindArgs=new SiteFindArgs();
| > | > | > > >
| > | > | > > > siteFindArgs.FiscalAgentId=1;
| > | > | > > > //Convert.ToInt32(fasFiscalAgent.SelectedFiscalAgentId);
| > | > | > > >
| > | > | > > > SiteVisible = true;
| > | > | > > >
| > | > | > > > ddlSites.DataSource = Business.Site.Find(siteFindArgs);
| > | > | > > >
| > | > | > > > ddlSites.DataTextField = "Name";
| > | > | > > >
| > | > | > > > ddlSites.DataValueField = "SiteId";
| > | > | > > >
| > | > | > > > ddlSites.DataBind();
| > | > | > > >
| > | > | > > > ddlSites.Items.Insert(0, new ListItem(string.Empty,
| > | string.Empty));
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > else
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > ddlSites.Items.Clear();
| > | > | > > >
| > | > | > > > SiteVisible = false;
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > // LoadClasses();
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > private void LoadClasses()
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > if(ddlSites.SelectedValue != string.Empty)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > AdultEdClassFindArgs adultEdClassFindArgs = new
| > | > | AdultEdClassFindArgs();
| > | > | > > >
| > | > | > > > // adultEdClassFindArgs.FiscalAgentId =
| > | > | > > > Convert.ToInt32(fasFiscalAgent.SelectedFiscalAgentId);
| > | > | > > >
| > | > | > > > // adultEdClassFindArgs.ReportingYearStartDate =
| > | > | > > > rysReportingYearSelector.ReportingYearStartDate;
| > | > | > > >
| > | > | > > > // adultEdClassFindArgs.ReportingYearEndDate =
| > | > | > > > rysReportingYearSelector.ReportingYearEndDate;
| > | > | > > >
| > | > | > > > // adultEdClassFindArgs.ProviderName =
| > ddlProviders.SelectedValue;
| > | > | > > >
| > | > | > > > // adultEdClassFindArgs.SiteName = ddlSites.SelectedValue;
| > | > | > > >
| > | > | > > >
| > | > | > > > ClassVisible = true;
| > | > | > > >
| > | > | > > > ddlClasses.DataSource =
| AdultEdClass.Find(adultEdClassFindArgs);
| > | > | > > >
| > | > | > > > ddlClasses.DataTextField = "Name";
| > | > | > > >
| > | > | > > > ddlClasses.DataValueField = "ClassId";
| > | > | > > >
| > | > | > > > ddlClasses.DataBind();
| > | > | > > >
| > | > | > > > ddlClasses.Items.Insert(0, new ListItem(string.Empty,
| > | > string.Empty));
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > else
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > ddlClasses.Items.Clear();
| > | > | > > >
| > | > | > > > ClassVisible = false;
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > >
| > | > | > > >
| > | > | > > > #region Public Properties
| > | > | > > >
| > | > | > > > #region IReportParameterControl Members
| > | > | > > >
| > | > | > > > public object ParameterValue
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > get{ return null; }
| > | > | > > >
| > | > | > > > set{ /*do nothing */ }
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > public ParameterCollection Parameters
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > get{ return parameters; }
| > | > | > > >
| > | > | > > > set{ parameters = value;}
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > #endregion
| > | > | > > >
| > | > | > > > protected bool FundingSourceVisible
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > get
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > if(ViewState["FundingSourceVisible"] == null)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > return false;
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > return (bool)ViewState["FundingSourceVisible"];
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > set
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > TrackViewState();
| > | > | > > >
| > | > | > > > ViewState["FundingSourceVisible"] = value;
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > protected bool ProviderVisible
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > get
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > if(ViewState["ProviderVisible"] == null)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > return false;
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > return (bool)ViewState["ProviderVisible"];
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > set
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > TrackViewState();
| > | > | > > >
| > | > | > > > ViewState["ProviderVisible"] = value;
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > protected bool SiteVisible
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > get
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > if(ViewState["SiteVisible"] == null)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > return false;
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > return (bool)ViewState["SiteVisible"];
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > set
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > TrackViewState();
| > | > | > > >
| > | > | > > > ViewState["SiteVisible"] = value;
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > protected bool ClassVisible
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > get
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > if(ViewState["ClassVisible"] == null)
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > return false;
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > return (bool)ViewState["ClassVisible"];
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > set
| > | > | > > >
| > | > | > > > {
| > | > | > > >
| > | > | > > > TrackViewState();
| > | > | > > >
| > | > | > > > ViewState["ClassVisible"] = value;
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > #endregion
| > | > | > > >
| > | > | > > > #region Private Member Variables
| > | > | > > >
| > | > | > > > private DropDownList ddlFundingSource;
| > | > | > > >
| > | > | > > > private DropDownList ddlProviders;
| > | > | > > >
| > | > | > > > private DropDownList ddlSites;
| > | > | > > >
| > | > | > > > private DropDownList ddlClasses;
| > | > | > > >
| > | > | > > > private ParameterCollection parameters = new
| > | ParameterCollection();
| > | > | > > >
| > | > | > > > #endregion
| > | > | > > >
| > | > | > > > #region Private Constants
| > | > | > > >
| > | > | > > > private const string ReportingYearSelectorControlId =
| > | > | > > > "rysReportingYearSelector";
| > | > | > > >
| > | > | > > > private const string FiscalAgentSelectorControlId =
| > | > | > > > "fasFiscalAgentSelector";
| > | > | > > >
| > | > | > > > private const string FundingSourceControlId =
| > "ddlFundingSource";
| > | > | > > >
| > | > | > > > private const string FundingSourceLabelControlId =
| > | > "lblFundingSource";
| > | > | > > >
| > | > | > > > private const string ProvidersControlId = "ddlProviders";
| > | > | > > >
| > | > | > > > private const string ProvidersLabelControlId =
"lblProviders";
| > | > | > > >
| > | > | > > > private const string SitesControlId = "ddlSites";
| > | > | > > >
| > | > | > > > private const string SitesLabelControlId = "lblSites";
| > | > | > > >
| > | > | > > > private const string ClassesControlId = "ddlClasses";
| > | > | > > >
| > | > | > > > private const string ClassesLabelControlId = "lblClasses";
| > | > | > > >
| > | > | > > > #endregion
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > > }
| > | > | > > >
| > | > | > > >
in
| > | message
| > | > | > > > | > | > | > > > > Hi TS,
| > | > | > > > >
| > | > | > > > > See you again :), seems you're rushing in a asp.net
project
| > | these
| > | > | > days?
| > | > | > > > > For the question you mentioned in this post, here are some
| of
| > my
| > | > | > > > > understanding and suggestions:
| > | > | > > > >
| > | > | > > > > 1. ASP.NET controls derived from Control will
automatically
| > | > maintain
| > | > | > its
| > | > | > > > > ViewStates according to the asp.net web page's events
| > sequence.
| > | So
| > | > | for
| > | > | > > > > composite control, those nested sub Controls' status
| > (properties
| > | > | which
| > | > | > > be
| > | > | > > > > persistd in Viewsstate ) will be store and retrieve
| > | automatically.
| > | > | > > > >
| > | > | > > > > 2. However, there're some thing we need to care when
| building
| > | > | > composite
| > | > | > > > > control:
| > | > | > > > > #remember to implement INamingContainer for controls which
| > will
| > | > have
| > | > | > > > nested
| > | > | > > > > sub controls. Otherwise, even handler mapping, ViewState
| > loading
| > | > | will
| > | > | > > > occur
| > | > | > > > > unexpectedly.
| > | > | > > > >
| > | > | > > > > #Do remember to assign a explicit ID for each sub
| > controls(same
| > | > | reason
| > | > | > > as
| > | > | > > > > #1). Also, please always try best to add subcontrols in
the
| > | > | > > > > "CreateChildControls" method(just create control
hierarchy)
| > and
| > | > put
| > | > | > > > > manipulating code in postback event or PreRender event.
| > | > | > > > >
| > | > | > > > > In addition, for your detaile scenario, I've just
built
a
| very
| > | > | simple
| > | > | > > demo
| > | > | > > > > control which have three dropdownlists and The "Top" one
| will
| > | > | display
| > | > | > > > > first(other twos invisible) and according to the top one's
| > | > | selection,
| > | > | > > the
| > | > | > > > > "Mid" dropdownlist will be pouplated and the same when the
| > | "mid"'s
| > | > | > > > > selection changed......
| > | > | > > > >
| > | > | > > > > Here's the control's code for your reference:
| > | > | > > > >
| > | > | > > > > =========================
| > | > | > > > > [DefaultProperty("Text"),
| > | > | > > > > ToolboxData("<{0}:MultiListControl
| > | > | > > runat=server></{0}:MultiListControl>")]
| > | > | > > > > public class MultiListControl :
| > | > | System.Web.UI.WebControls.WebControl,
| > | > | > > > > INamingContainer
| > | > | > > > > {
| > | > | > > > > private string text;
| > | > | > > > >
| > | > | > > > > private DropDownList lstTop;
| > | > | > > > > private DropDownList lstMid;
| > | > | > > > > private DropDownList lstBot;
| > | > | > > > >
| > | > | > > > >
| > | > | > > > >
| > | > | > > > >
| > | > | > > > >
| > | > | > > > > protected bool MidVisible
| > | > | > > > > {
| > | > | > > > > get{
| > | > | > > > > if(ViewState["MID_VISIBLE"] == null)
| > | > | > > > > {
| > | > | > > > > return false;
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > > return (bool)ViewState["MID_VISIBLE"];
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > > set{
| > | > | > > > > TrackViewState();
| > | > | > > > > ViewState["MID_VISIBLE"] = value;
| > | > | > > > > }
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > > protected bool BotVisible
| > | > | > > > > {
| > | > | > > > > get
| > | > | > > > > {
| > | > | > > > > if(ViewState["BOT_VISIBLE"] == null)
| > | > | > > > > {
| > | > | > > > > return false;
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > > return (bool)ViewState["BOT_VISIBLE"];
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > > set
| > | > | > > > > {
| > | > | > > > > TrackViewState();
| > | > | > > > > ViewState["BOT_VISIBLE"] = value;
| > | > | > > > > }
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > >
| > | > | > > > > [Bindable(true),
| > | > | > > > > Category("Appearance"),
| > | > | > > > > DefaultValue("")]
| > | > | > > > > public string Text
| > | > | > > > > {
| > | > | > > > > get
| > | > | > > > > {
| > | > | > > > > return text;
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > > set
| > | > | > > > > {
| > | > | > > > > text = value;
| > | > | > > > > }
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > >
| > | > | > > > > protected override void CreateChildControls()
| > | > | > > > > {
| > | > | > > > > Controls.Clear();
| > | > | > > > >
| > | > | > > > > Controls.Add(
| > | > | > > > > new LiteralControl(
| > | > | > > > > @"
| > | > | > > > > <table width='100%'>
| > | > | > > > > <tr><td>
| > | > | > > > > "));
| > | > | > > > >
| > | > | > > > > lstTop = new DropDownList();
| > | > | > > > > lstTop.ID = "lstTop";
| > | > | > > > >
| > | > | > > > > lstTop.Items.Add("----------");
| > | > | > > > > lstTop.Items.Add("Top_Item_1");
| > | > | > > > > lstTop.Items.Add("Top_Item_2");
| > | > | > > > > lstTop.Items.Add("Top_Item_3");
| > | > | > > > > lstTop.Items.Add("Top_Item_4");
| > | > | > > > >
| > | > | > > > > Controls.Add(lstTop);
| > | > | > > > >
| > | > | > > > > Controls.Add(
| > | > | > > > > new LiteralControl(
| > | > | > > > > @"<br/>"
| > | > | > > > > ));
| > | > | > > > >
| > | > | > > > > lstMid = new DropDownList();
| > | > | > > > > lstMid.ID = "lstMid";
| > | > | > > > >
| > | > | > > > > Controls.Add(lstMid);
| > | > | > > > >
| > | > | > > > > Controls.Add(
| > | > | > > > > new LiteralControl(
| > | > | > > > > @"<br/>"
| > | > | > > > > ));
| > | > | > > > >
| > | > | > > > >
| > | > | > > > > lstBot = new DropDownList();
| > | > | > > > > lstBot.ID = "lstBot";
| > | > | > > > >
| > | > | > > > > Controls.Add(lstBot);
| > | > | > > > >
| > | > | > > > >
| > | > | > > > > Controls.Add(
| > | > | > > > > new LiteralControl(
| > | > | > > > > @"
| > | > | > > > > </td></tr>
| > | > | > > > > </table>
| > | > | > > > > "
| > | > | > > > > ));
| > | > | > > > >
| > | > | > > > >
| > | > | > > > >
| > | > | > > > > lstTop.SelectedIndexChanged +=new
| > | > | > > EventHandler(lst_SelectedIndexChanged);
| > | > | > > > > lstMid.SelectedIndexChanged +=new
| > | > | > > EventHandler(lst_SelectedIndexChanged);
| > | > | > > > > lstBot.SelectedIndexChanged +=new
| > | > | > > EventHandler(lst_SelectedIndexChanged);
| > | > | > > > >
| > | > | > > > > lstTop.AutoPostBack = lstMid.AutoPostBack =
| > lstBot.AutoPostBack
| > | =
| > | > | > true;
| > | > | > > > >
| > | > | > > > >
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > >
| > | > | > > > > protected override void OnPreRender(EventArgs e)
| > | > | > > > > {
| > | > | > > > > base.OnPreRender (e);
| > | > | > > > >
| > | > | > > > > lstMid.Visible = MidVisible;
| > | > | > > > > lstBot.Visible = BotVisible;
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > >
| > | > | > > > >
| > | > | > > > >
| > | > | > > > > private void lst_SelectedIndexChanged(object sender,
| > | > | System.EventArgs
| > | > | > e)
| > | > | > > > > {
| > | > | > > > >
| > | > | > > > > DropDownList lst = sender as DropDownList;
| > | > | > > > >
| > | > | > > > > switch(lst.ID)
| > | > | > > > > {
| > | > | > > > > case "lstTop":
| > | > | > > > >
| > | > | > > > > if(lst.SelectedIndex != 0)
| > | > | > > > > {
| > | > | > > > > lstMid.DataSource = GetSubItems(lst.SelectedValue);
| > | > | > > > > lstMid.DataTextField = "Text";
| > | > | > > > > lstMid.DataValueField= "Value";
| > | > | > > > > lstMid.DataBind();
| > | > | > > > >
| > | > | > > > > MidVisible = true;
| > | > | > > > > }
| > | > | > > > > else
| > | > | > > > > {
| > | > | > > > > MidVisible = BotVisible = false;
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > > break;
| > | > | > > > > case "lstMid":
| > | > | > > > >
| > | > | > > > > lstBot.DataSource = GetSubItems(lst.SelectedValue);
| > | > | > > > > lstBot.DataTextField = "Text";
| > | > | > > > > lstBot.DataValueField= "Value";
| > | > | > > > > lstBot.DataBind();
| > | > | > > > >
| > | > | > > > > MidVisible = BotVisible = true;
| > | > | > > > >
| > | > | > > > > break;
| > | > | > > > > case "lstBot":
| > | > | > > > >
| > | > | > > > >
| > | > | > > > >
| > | > | > > > > break;
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > > Page.Response.Write("<br>" + lst.ID +
| > "_selectedindexchanged!" +
| > | > | > > > > lst.EnableViewState);
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > > #region --Helper functions---
| > | > | > > > >
| > | > | > > > > public ListItemCollection GetSubItems(string parent)
| > | > | > > > > {
| > | > | > > > > ListItemCollection items = new ListItemCollection();
| > | > | > > > > int count = parent.Length;
| > | > | > > > >
| > | > | > > > > for(int i=0;i<count;++i)
| > | > | > > > > {
| > | > | > > > > items.Add(parent + "_Item_" + i);
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > > return items;
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > >
| > | > | > > > > #endregion
| > | > | > > > > }
| > | > | > > > >
| > | > | > > > > ========================
| > | > | > > > > Hope helps. Thanks,
| > | > | > > > >
| > | > | > > > > Steven Cheng
| > | > | > > > > Microsoft Online Support
| > | > | > > > >
| > | > | > > > > Get Secure! www.microsoft.com/security
| > | > | > > > > (This posting is provided "AS IS", with no warranties, and
| > | confers
| > | > | no
| > | > | > > > > rights.)
| > | > | > > > >
| > | > | > > > >
| > | > | > > > > --------------------
| > | > | > > > > | From: "TS" <[email protected]>
| > | > | > > > > | References: <[email protected]>
| > | > | > > > > | Subject: Re: explanation of when need to repopulate
| control
| > | > | > > > > | Date: Tue, 2 Aug 2005 18:32:23 -0500
| > | > | > > > > | Lines: 39
| > | > | > > > > | X-Priority: 3
| > | > | > > > > | X-MSMail-Priority: Normal
| > | > | > > > > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > | > | > > > > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > | > | > > > > | Message-ID: <[email protected]>
| > | > | > > > > | Newsgroups:
| > | > | > > > >
| > | > | > > >
| > | > | > >
| > | > | >
| > | > |
| > | >
| > |
| >
|
microsoft.public.dotnet.framework.aspnet.webcontrols,microsoft.public.dotnet
| > | > | > > > > framework.aspnet.buildingcontrols
| > | > | > > > > | NNTP-Posting-Host: 103nat100.tea.state.tx.us
| 198.214.103.100
| > | > | > > > > | Path:
| > | > | > TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| > | > | > > > > | Xref: TK2MSFTNGXA01.phx.gbl
| > | > | > > > >
| microsoft.public.dotnet.framework.aspnet.buildingcontrols:3979
| > | > | > > > > microsoft.public.dotnet.framework.aspnet.webcontrols:10243
| > | > | > > > > | X-Tomcat-NG:
| > | > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | > | > > > > |
| > | > | > > > > | sorry, heres the scenario i'm trying to accomplish:
| > | > | > > > > | I have a composite control that contains 4 drop down
| lists.
| > | When
| > | > | the
| > | > | > > > page
| > | > | > > > > | loads initially, i want the first drop down filled and
the
| > | rest
| > | > | > > > invisible.
| > | > | > > > > | When you select an item in this ddl, it posts back to
the
| > | server
| > | > | and
| > | > | > > > based
| > | > | > > > > | on its value, it populates its immediate child's drop
down
| > | list.
| > | > | So
| > | > | > > now
| > | > | > > > > the
| > | > | > > > > | top ddl has a value selected and the 2nd one just has
its
| > | items
| > | > | > > > populated.
| > | > | > > > > | Then when the 2nd drop down list gets selected, it posts
| to
| > | the
| > | > | > server
| > | > | > > > and
| > | > | > > > > | its value is used to populate(filter) the items for the
| 3rd
| > | drop
| > | > | > down
| > | > | > > > > | list...and so on for each drop down list.
| > | > | > > > > |
| > | > | > > > > | Please tell me what i need to do to handle post back
data
| > and
| > | > | > maintain
| > | > | > > > > state
| > | > | > > > > | from one postback to another while keeping the drop
| > downlists
| > | > | filled
| > | > | > > and
| > | > | > > > > | their values persisted.
| > | > | > > > > |
| > | > | > > > > | thank you again!
| > | > | > > > > |
| > | > | > > > > |
| > | > | > > > > | | > | > | > > > > | > I have a quesiton:
| > | > | > > > > | > if i have a composite control and on its intial page
| > | loading,
| > | > i
| > | > | > fill
| > | > | > > > my
| > | > | > > > > | (sub
| > | > | > > > > | > control) drop down list's items collection from the
| > database
| > | > and
| > | > | > > > return.
| > | > | > > > > | > When the user hits a button to cause postback, the
| control
| > | is
| > | > | > going
| > | > | > > to
| > | > | > > > > get
| > | > | > > > > | > initialized, then does its items collection that i
| filled
| > on
| > | > the
| > | > | > > > initial
| > | > | > > > > | > page request get repopulated from viewstate? And on
top
| of
| > | > that,
| > | > | > if
| > | > | > > > so,
| > | > | > > > > | does
| > | > | > > > > | > the list item that person selected in the drop down
list
| > | again
| > | > | set
| > | > | > > > > itself
| > | > | > > > > | as
| > | > | > > > > | > the selected item in the list?
| > | > | > > > > | >
| > | > | > > > > | > OR do i have to re-load the items on every page
request
| > and
| > | > then
| > | > | > > > > populate
| > | > | > > > > | > its value some other way???
| > | > | > > > > | >
| > | > | > > > > | > thanks a bunch
| > | > | > > > > | >
| > | > | > > > > | >
| > | > | > > > > |
| > | > | > > > > |
| > | > | > > > > |
| > | > | > > > >
| > | > | > > >
| > | > | > > >
| > | > | > >
| > | > | > >
| > | > | >
| > | > | >
| > | > |
| > | > |
| > | > |
| > | >
| > |
| > |
| > |
| >
|
|
|
 
S

Steven Cheng[MSFT]

Hi TS,

You can mail me through the address by removing the "online" in the address
of my signature.

Thanks,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)
--------------------
| From: "TS" <[email protected]>
| References: <[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<unRs#[email protected]>
<[email protected]>
<#[email protected]>
<[email protected]>
<#[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
| Subject: Re: explanation of when need to repopulate control
| Date: Tue, 16 Aug 2005 15:44:51 -0500
| Lines: 1635
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <#[email protected]>
| Newsgroups: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| NNTP-Posting-Host: 101nat080.tea.state.tx.us 198.214.101.80
| Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| Xref: TK2MSFTNGXA01.phx.gbl
microsoft.public.dotnet.framework.aspnet.buildingcontrols:4058
| X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.buildingcontrols
|
| So what is happening is the same thing that was happening, the top most
| parent's event handler is called correctly, but its child's event is
| envoking the parent's event handler (the same one).
|
| | > Hey Steven, I have a problem while working with the same DataList
control.
| > That one problem that caused the wrong event handler to get called is
| > happening now. I am working on a different project using the same
control
| > that i got finished on the other project and trying to implement on this
| new
| > project, and it is set up almost the same. The only difference is that
on
| > this new one, i have added a postback step before the custom datalist
gets
| > loaded.
| >
| > Any ideas as why the wrong event handler is getting called?
| >
| > thanks
| >
| > | > > You're welcome TS.
| > >
| > > Glad that you've overcome the problem.
| > >
| > > Regards,
| > >
| > > Steven Cheng
| > > Microsoft Online Support
| > >
| > > Get Secure! www.microsoft.com/security
| > > (This posting is provided "AS IS", with no warranties, and confers no
| > > rights.)
| > > --------------------
| > > | From: "TS" <[email protected]>
| > > | References: <[email protected]>
| > > <[email protected]>
| > > <[email protected]>
| > > <[email protected]>
| > > <unRs#[email protected]>
| > > <[email protected]>
| > > <#[email protected]>
| > > <[email protected]>
| > > <#[email protected]>
| > > <[email protected]>
| > > | Subject: Re: explanation of when need to repopulate control
| > > | Date: Mon, 8 Aug 2005 12:50:32 -0500
| > > | Lines: 1445
| > > | X-Priority: 3
| > > | X-MSMail-Priority: Normal
| > > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > > | Message-ID: <[email protected]>
| > > | Newsgroups:
microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > > | Path:
TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| > > | Xref: TK2MSFTNGXA01.phx.gbl
| > > microsoft.public.dotnet.framework.aspnet.buildingcontrols:4014
| > > | X-Tomcat-NG:
microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > |
| > > | Well you were right that it had something to do with the custom
| control.
| > > The
| > > | datalist was trying to load itself during page load. i put the code
in
| > > Init,
| > > | and it worked.
| > > |
| > > | thanks steven
| > > |
| > > | | > > | > Thanks for your followup TS.
| > > | >
| > > | > So can I say that currently your custom webcontrol(not template
list
| > > | > control) can correctly be added both statically and dynamically in
| the
| > > | > normal DataList or Repeater controls (asp.net buildin ) , but
have
| > some
| > > | > problem for postback events when added in your custom list
control?
| > > | >
| > > | > If so, we should keep focus on the custom datalist control. Has it
| any
| > > | > problems when we nest some asp.net buildin controls in it? Would
you
| > try
| > > | > making a simplified version of your custom datalist control so
that
| we
| > > can
| > > | > have a view to see whether there is anything wrong in it. Also,
| it'll
| > be
| > > | > helpful you also provide the complete code that you dynamically
add
| > > | control
| > > | > into the datalist (through reflection).
| > > | >
| > > | > Thanks,
| > > | >
| > > | > Steven Cheng
| > > | > Microsoft Online Support
| > > | >
| > > | > Get Secure! www.microsoft.com/security
| > > | > (This posting is provided "AS IS", with no warranties, and confers
| no
| > > | > rights.)
| > > | >
| > > | > --------------------
| > > | > | From: "TS" <[email protected]>
| > > | > | References: <[email protected]>
| > > | > <[email protected]>
| > > | > <[email protected]>
| > > | > <[email protected]>
| > > | > <unRs#[email protected]>
| > > | > <[email protected]>
| > > | > <#[email protected]>
| > > | > <[email protected]>
| > > | > | Subject: Re: explanation of when need to repopulate control
| > > | > | Date: Fri, 5 Aug 2005 17:19:23 -0500
| > > | > | Lines: 1298
| > > | > | X-Priority: 3
| > > | > | X-MSMail-Priority: Normal
| > > | > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > > | > | Message-ID: <#[email protected]>
| > > | > | Newsgroups:
| > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > > | > | Path:
| > TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP15.phx.gbl
| > > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols:4003
| > > | > | X-Tomcat-NG:
| > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > |
| > > | > | I have a new problem now. I have figured out that the cause is
the
| > > same
| > > | > | reason. If its in the custom DataList, it doesn't work, else it
| does
| > > | work.
| > > | > |
| > > | > | The scenario:
| > > | > | After the initial page load, you enter data into controls and
hit
| > > submit
| > > | > | button, the process is as follows:
| > > | > | Page_Load
| > > | > | DataList's OnLoad
| > > | > | Composite Control's OnLoad
| > > | > | Submit button's OnClick - At this point, the controls in the
| > composite
| > > | > | control have no listitems and no selectedValue properties.
| > > | > |
| > > | > | I have statically added the composite control onto the same page
| as
| > > the
| > > | > | dynamic one, so here is the process in this scenario:
| > > | > | Page_Load
| > > | > | Composite Control's OnLoad (The one whose parent is Page)
| > > | > | DataList's OnLoad
| > > | > | Composite Control's OnLoad (The one whose parent is the Custom
| > > DataList)
| > > | > | Submit button's OnClick - At this point, the controls in the
| > > statically
| > > | > | declared composite control have listitems and have values for
| > > | > selectedValue
| > > | > | properties.
| > > | > |
| > > | > | So the same control at the same time - the one outside the
custom
| > > | Datalist
| > > | > | has its controls' state set up correctly, the ones inside does
| not.
| > > | > |
| > > | > | So the same reason is at play here. Maybe since i am dynamically
| > > | creating
| > > | > | the class using reflection (Assembly.CreateInstance()) that has
| > > | something
| > > | > to
| > > | > | do with it?
| > > | > |
| > > | > | Please help mr. Cheng.
| > > | > |
| > > | > | Thank you very much!
| > > | > |
| > > | > | TS
| > > | > |
| > > | > |
| > > | > |
| message
| > > | > | | > > | > | > Hi TS,
| > > | > | >
| > > | > | > First, I'm glad that you've got your composite control work,
all
| > the
| > > | > | > dropdownlist's postback events can fire correctly,yes?
| > > | > | >
| > > | > | > As for the new problem you encountered when adding your
| composite
| > > | > control
| > > | > | > into DataList's item, is the DataList the asp.net's buildin
| > DataList
| > > | > | > control? And since you mentioned that you dynamically add
your
| > > | control
| > > | > | > into it, how do you dynamically add your custom control? Will
| > there
| > > | > occur
| > > | > | > problem if you statically add your control into DataList?
| > > | > | >
| > > | > | > Thanks,
| > > | > | >
| > > | > | > Steven Cheng
| > > | > | > Microsoft Online Support
| > > | > | >
| > > | > | > Get Secure! www.microsoft.com/security
| > > | > | > (This posting is provided "AS IS", with no warranties, and
| confers
| > > no
| > > | > | > rights.)
| > > | > | >
| > > | > | > --------------------
| > > | > | > | From: "TS" <[email protected]>
| > > | > | > | References: <[email protected]>
| > > | > | > <[email protected]>
| > > | > | > <[email protected]>
| > > | > | > <[email protected]>
| > > | > | > <unRs#[email protected]>
| > > | > | > <[email protected]>
| > > | > | > | Subject: Re: explanation of when need to repopulate control
| > > | > | > | Date: Wed, 3 Aug 2005 19:07:16 -0500
| > > | > | > | Lines: 1153
| > > | > | > | X-Priority: 3
| > > | > | > | X-MSMail-Priority: Normal
| > > | > | > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > > | > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > > | > | > | Message-ID: <#[email protected]>
| > > | > | > | Newsgroups:
| > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > > | > | > | Path:
| > > | TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP14.phx.gbl
| > > | > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > > | > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols:3989
| > > | > | > | X-Tomcat-NG:
| > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | > |
| > > | > | > | Well Steve, I am almost done. My control works well, except
| its
| > > not
| > > | in
| > > | > | the
| > > | > | > | framework i just mentioned. Adding my control dynamically to
| the
| > > | > | > datalist's
| > > | > | > | item may be the root of the cause. i've made sure all custom
| > > | controls
| > > | > | > | implmenet INamingContainer & I think all controls have their
| > id's
| > > | set,
| > > | > | so
| > > | > | > | what else can i do?
| > > | > | > |
| > > | > | > | thanks a bunch
| > > | > | > |
| > > | > | > | | > > | > | > | > I have figured the cause of the problem, sort of. My main
| > > control
| > > | > was
| > > | > | > | being
| > > | > | > | > loaded dynamically during a custom data list control's
| > > | ItemDataBound
| > > | > | > | event,
| > > | > | > | > and then added to the e.item.controls collection. Once I
| > removed
| > > | it
| > > | > | from
| > > | > | > | > here, the correct event was called in my control. the
| problem
| > > is i
| > > | > | need
| > > | > | > to
| > > | > | > | > keep it where it is because of the way the page works.
| > > | > | > | >
| > > | > | > | > I tried to add INamingContainer to the custom Datalist,
but
| > that
| > > | > | didn't
| > > | > | > | > help. Any ideas what could make this happen?
| > > | > | > | >
| > > | > | > | > thanks so much, i know i'm being a pain, but i'm stuck!
| > > | > | > | >
| > > | > | > | > This is the custom DataLists' event:
| > > | > | > | > protected override void
| OnItemDataBound(DataListItemEventArgs
| > e)
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > base.OnItemDataBound(e);
| > > | > | > | >
| > > | > | > | > Parameter parameter = (Parameter)e.Item.DataItem;
| > > | > | > | >
| > > | > | > | > try
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > Control control;
| > > | > | > | >
| > > | > | > | > if(parameter.Type == ParameterType.Control)
| > > | > | > | >
| > > | > | > | > control = this.Page.LoadControl(parameter.ControlPath);
| > > | > | > | >
| > > | > | > | > else
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > Assembly assembly = parameter.Assembly;
| > > | > | > | >
| > > | > | > | > if(assembly == null)
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > // The control didn't declare its own assembly, so use the
| > > | report's
| > > | > | > | > ControlsAssembly
| > > | > | > | >
| > > | > | > | > assembly = this.ControlsAssembly;
| > > | > | > | >
| > > | > | > | > // Ther report's ControlsAssembly is null, so use current
| > page's
| > > | > | > assembly
| > > | > | > | >
| > > | > | > | > if(assembly == null)
| > > | > | > | >
| > > | > | > | > assembly = this.Page.GetType().BaseType.Assembly;
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | >
| > > | > | > | > control = (Control)
| > > | > | assembly.CreateInstance(parameter.ControlTypeName);
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > control.ID = parameter.Name;
| > > | > | > | >
| > > | > | > | > // Set up all the properties of this control from the
| > > | > | > parameter.properties
| > > | > | > | >
| > > | > | > | > foreach(DictionaryEntry de in parameter.Properties)
| > > | > | > | >
| > > | > | > | > SetProperty(de.Key.ToString(), de.Value.ToString(),
| control);
| > > | > | > | >
| > > | > | > | >
| > > | > | > | > e.Item.Controls.Add(control);
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > catch (Exception ex)
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > throw new ApplicationException("Unable to render criteria.
| > > Reason:
| > > | > " +
| > > | > | > | > ex.Message, ex);
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > | > > | > | > | > > In testing, i removed the main parent dropdown and only
| left
| > > the
| > > | 2
| > > | > | > below
| > > | > | > | > it.
| > > | > | > | > > this time, the same scenario happened...when the child
| > > dropdown
| > > | > list
| > > | > | > | > > autopostsback, it's immediate parent's
| selectedindexchanged
| > > | event
| > > | > | > fires!
| > > | > | > | I
| > > | > | > | > 'm
| > > | > | > | > > starting to pull my hair out now...I"m stuck!
| > > | > | > | > >
| > > | > | > | > > please help superman
| > > | > | > | > >
| > > | > | > | > > | > > | > | > | > > > Another problem:
| > > | > | > | > > >
| > > | > | > | > > > while i'm waiting on your remark to my last post, i
| > removed
| > > | the
| > > | > | sub
| > > | > | > | > > > composite controls from my composite control so that
| there
| > > is
| > > | > only
| > > | > | > | drop
| > > | > | > | > > down
| > > | > | > | > > > lists on it. During CreateChildcontrols, i load the
main
| > > drop
| > > | > down
| > > | > | > | using
| > > | > | > | > > > databind. When the page is sent to browser for the
first
| > > time,
| > > | i
| > > | > | > have
| > > | > | > | my
| > > | > | > | > > > main drop down filled. I then select an item and its
| > > | > | > | > SelectedIndexChanged
| > > | > | > | > > > fires and populates the send drop down list. Then
when i
| > > | select
| > > | > an
| > > | > | > | item
| > > | > | > | > > from
| > > | > | > | > > > it, it posts back, and the event that gets called is
the
| > > | > | main(first)
| > > | > | > | > > > dropdown list's SelectedIndexChanged event, which then
| > > | > | re-populates
| > > | > | > | the
| > > | > | > | > > > second drop down list, then the control returns to the
| > > browser
| > > | > | (The
| > > | > | > | > > > SelectedIndexChanged event never fired for the 2nd
| > > dropdown's
| > > | > | > changed
| > > | > | > | > > > event.???
| > > | > | > | > > >
| > > | > | > | > > > thanks again
| > > | > | > | > > >
| > > | > | > | > > > using System;
| > > | > | > | > > >
| > > | > | > | > > > using System.Collections.Specialized;
| > > | > | > | > > >
| > > | > | > | > > > using System.Web.UI;
| > > | > | > | > > >
| > > | > | > | > > > using System.Web.UI.WebControls;
| > > | > | > | > > >
| > > | > | > | > > > using System.Text;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Business;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Data;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Reporting;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Reporting.WebControls;
| > > | > | > | > > >
| > > | > | > | > > > namespace OperationsTeams.Web.ReportControls
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > /// <summary>
| > > | > | > | > > >
| > > | > | > | > > > /// Summary description for FiscalAgentHierarchy.
| > > | > | > | > > >
| > > | > | > | > > > /// </summary>
| > > | > | > | > > >
| > > | > | > | > > > public class FiscalAgentHierarchy : WebControl,
| > > | > | > | IReportParameterControl,
| > > | > | > | > > > INamingContainer
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > public FiscalAgentHierarchy()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@SchoolYear"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@ReportingGroup"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@FiscalAgentID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@FundingSourceID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@ProviderID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@SiteID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@ClassID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters["@SchoolYear"].Value = 2006;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > #region Events
| > > | > | > | > > >
| > > | > | > | > > > protected override void OnLoad(EventArgs e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > base.OnLoad (e);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > // The last state of controls from viewstate is now
| loaded
| > > | > (Before
| > > | > | > the
| > > | > | > | > > > client data is processed)
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > protected override void OnPreRender(EventArgs e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > base.OnPreRender (e);
| > > | > | > | > > >
| > > | > | > | > > > // The controls now have the client values from the
the
| > last
| > > | > | > postback
| > > | > | > | > > >
| > > | > | > | > > > // ddlFundingSource.Visible = FundingSourceVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlProviders.Visible = ProviderVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Visible = SiteVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlClasses.Visible = ClassVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("help","1"));
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("me","2"));
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Visible = true;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void
| > > | > rysReportingYearSelector_ReportingYearChanged(object
| > > | > | > | > sender,
| > > | > | > | > > > EventArgs e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > // this.LoadFundingSource();
| > > | > | > | > > >
| > > | > | > | > > > // this.LoadProviders();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void fasFiscalAgent_FiscalAgentChanged(object
| > > sender,
| > > | > | > | EventArgs
| > > | > | > | > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > this.LoadFundingSource();
| > > | > | > | > > >
| > > | > | > | > > > this.LoadProviders();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void
| ddlFundingSource_SelectedIndexChanged(object
| > > | > sender,
| > > | > | > | > > EventArgs
| > > | > | > | > > > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > LoadSites();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void ddlProviders_SelectedIndexChanged(object
| > > sender,
| > > | > | > | EventArgs
| > > | > | > | > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > LoadSites();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void ddlSites_SelectedIndexChanged(object
| sender,
| > > | > | EventArgs
| > > | > | > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > LoadClasses();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > protected override void CreateChildControls()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > this.ddlProviders = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > this.ddlSites = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > this.ddlClasses = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > ddlFundingSource.ID = FundingSourceControlId;
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.ID = ProvidersControlId;
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.ID = SitesControlId;
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.ID = ClassesControlId;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > LoadProviders();
| > > | > | > | > > >
| > > | > | > | > > > // start containing table
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(WebHelper.MakeLiteral("<table
| > > cellpadding=0
| > > | > | > | > > > cellspacing=0><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > > // this.Controls.Add(rysReportingYearSelector);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > > // this.Controls.Add(fasFiscalAgent);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>Funding
| > > | > | > | > > > Source</td><td>"));
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlFundingSource);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > |
| > > | > | >
| > > | > |
| > > | >
| > > |
| > >
| >
|
this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>Providers</td><td>")
| > > | > | > | > > > );
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlProviders);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | >
| > > | > | >
| > > | >
| > >
| this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>Sites</td><td>"));
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlSites);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > |
| > > | > | >
| > > | > |
| > > | >
| > > |
| > >
| >
|
this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>Classes</td><td>"));
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlClasses);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > > // end containing table
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > > ddlFundingSource.SelectedIndexChanged += new
| > > | > | > | > > > EventHandler(ddlFundingSource_SelectedIndexChanged);
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.SelectedIndexChanged += new
| > > | > | > | > > > EventHandler(ddlProviders_SelectedIndexChanged);
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.SelectedIndexChanged += new
| > > | > | > | > > > EventHandler(ddlSites_SelectedIndexChanged);
| > > | > | > | > > >
| > > | > | > | > > > ddlFundingSource.AutoPostBack =
| ddlProviders.AutoPostBack
| > =
| > > | > | > | > > > ddlSites.AutoPostBack = true;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadFundingSource()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > int fiscalAgentId =
| > > | > 1;//this.fasFiscalAgent.SelectedFiscalAgentId;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > if(fiscalAgentId != int.MinValue)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > FundingSourceVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataSource =
| > > | > | > | > FiscalAgentFunding.Find(fiscalAgentId);
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataTextField =
| "ShortDescription";
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataValueField = "CodeId";
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > if(this.ddlFundingSource.Items.Count > 1)
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.Items.Insert(0, new
| > > | ListItem(string.Empty,
| > > | > | > | > > > string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > FundingSourceVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadProviders()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > int fiscalAgentId =
| > > 1;//fasFiscalAgent.SelectedFiscalAgentId;
| > > | > | > | > > >
| > > | > | > | > > > if(fiscalAgentId != int.MinValue)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("help","1"));
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("me","2"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > ProviderVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > // are these dates correct???????????????????????????
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataSource =
| > > | > FiscalAgentProvider.Find(fiscalAgentId,
| > > | > | > new
| > > | > | > | > > > DateTime(2005,7,1), new
| > > | > | > | > > >
| > > | > | > |
| > > | >
| > DateTime(2006,6,30));//rysReportingYearSelector.ReportingYearStartDate,
| > > | > | > | > > > rysReportingYearSelector.ReportingYearEndDate); //
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataTextField = "ProviderName";
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataValueField = "ProviderId";
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.Items.Insert(0, new
ListItem(string.Empty,
| > > | > | > | string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > this.ddlProviders.Items.Clear();
| > > | > | > | > > >
| > > | > | > | > > > ProviderVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > // LoadSites();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadSites()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ddlProviders.SelectedValue != string.Empty)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > // Load the Site search parameters.
| > > | > | > | > > >
| > > | > | > | > > > SiteFindArgs siteFindArgs=new SiteFindArgs();
| > > | > | > | > > >
| > > | > | > | > > > siteFindArgs.FiscalAgentId=1;
| > > | > | > | > > >
//Convert.ToInt32(fasFiscalAgent.SelectedFiscalAgentId);
| > > | > | > | > > >
| > > | > | > | > > > SiteVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataSource =
Business.Site.Find(siteFindArgs);
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataTextField = "Name";
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataValueField = "SiteId";
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.Items.Insert(0, new ListItem(string.Empty,
| > > | > | string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.Items.Clear();
| > > | > | > | > > >
| > > | > | > | > > > SiteVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > // LoadClasses();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadClasses()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ddlSites.SelectedValue != string.Empty)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > AdultEdClassFindArgs adultEdClassFindArgs = new
| > > | > | > | AdultEdClassFindArgs();
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.FiscalAgentId =
| > > | > | > | > > > Convert.ToInt32(fasFiscalAgent.SelectedFiscalAgentId);
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.ReportingYearStartDate =
| > > | > | > | > > > rysReportingYearSelector.ReportingYearStartDate;
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.ReportingYearEndDate =
| > > | > | > | > > > rysReportingYearSelector.ReportingYearEndDate;
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.ProviderName =
| > > | > ddlProviders.SelectedValue;
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.SiteName =
| ddlSites.SelectedValue;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > ClassVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataSource =
| > > | AdultEdClass.Find(adultEdClassFindArgs);
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataTextField = "Name";
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataValueField = "ClassId";
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.Items.Insert(0, new ListItem(string.Empty,
| > > | > | > string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.Items.Clear();
| > > | > | > | > > >
| > > | > | > | > > > ClassVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > #region Public Properties
| > > | > | > | > > >
| > > | > | > | > > > #region IReportParameterControl Members
| > > | > | > | > > >
| > > | > | > | > > > public object ParameterValue
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get{ return null; }
| > > | > | > | > > >
| > > | > | > | > > > set{ /*do nothing */ }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > public ParameterCollection Parameters
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get{ return parameters; }
| > > | > | > | > > >
| > > | > | > | > > > set{ parameters = value;}
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > protected bool FundingSourceVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["FundingSourceVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["FundingSourceVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["FundingSourceVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > protected bool ProviderVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["ProviderVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["ProviderVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["ProviderVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > protected bool SiteVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["SiteVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["SiteVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["SiteVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > protected bool ClassVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["ClassVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["ClassVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["ClassVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > #region Private Member Variables
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlFundingSource;
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlProviders;
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlSites;
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlClasses;
| > > | > | > | > > >
| > > | > | > | > > > private ParameterCollection parameters = new
| > > | > | ParameterCollection();
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > #region Private Constants
| > > | > | > | > > >
| > > | > | > | > > > private const string ReportingYearSelectorControlId =
| > > | > | > | > > > "rysReportingYearSelector";
| > > | > | > | > > >
| > > | > | > | > > > private const string FiscalAgentSelectorControlId =
| > > | > | > | > > > "fasFiscalAgentSelector";
| > > | > | > | > > >
| > > | > | > | > > > private const string FundingSourceControlId =
| > > | > "ddlFundingSource";
| > > | > | > | > > >
| > > | > | > | > > > private const string FundingSourceLabelControlId =
| > > | > | > "lblFundingSource";
| > > | > | > | > > >
| > > | > | > | > > > private const string ProvidersControlId =
| "ddlProviders";
| > > | > | > | > > >
| > > | > | > | > > > private const string ProvidersLabelControlId =
| > > "lblProviders";
| > > | > | > | > > >
| > > | > | > | > > > private const string SitesControlId = "ddlSites";
| > > | > | > | > > >
| > > | > | > | > > > private const string SitesLabelControlId = "lblSites";
| > > | > | > | > > >
| > > | > | > | > > > private const string ClassesControlId = "ddlClasses";
| > > | > | > | > > >
| > > | > | > | > > > private const string ClassesLabelControlId =
| "lblClasses";
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > "Steven Cheng[MSFT]" <[email protected]>
| wrote
| > in
| > > | > | message
| > > | > | > | > > > | > > | > | > | > > > > Hi TS,
| > > | > | > | > > > >
| > > | > | > | > > > > See you again :), seems you're rushing in a asp.net
| > > project
| > > | > | these
| > > | > | > | > days?
| > > | > | > | > > > > For the question you mentioned in this post, here
are
| > some
| > > | of
| > > | > my
| > > | > | > | > > > > understanding and suggestions:
| > > | > | > | > > > >
| > > | > | > | > > > > 1. ASP.NET controls derived from Control will
| > > automatically
| > > | > | > maintain
| > > | > | > | > its
| > > | > | > | > > > > ViewStates according to the asp.net web page's
events
| > > | > sequence.
| > > | > | So
| > > | > | > | for
| > > | > | > | > > > > composite control, those nested sub Controls' status
| > > | > (properties
| > > | > | > | which
| > > | > | > | > > be
| > > | > | > | > > > > persistd in Viewsstate ) will be store and retrieve
| > > | > | automatically.
| > > | > | > | > > > >
| > > | > | > | > > > > 2. However, there're some thing we need to care when
| > > | building
| > > | > | > | > composite
| > > | > | > | > > > > control:
| > > | > | > | > > > > #remember to implement INamingContainer for controls
| > which
| > > | > will
| > > | > | > have
| > > | > | > | > > > nested
| > > | > | > | > > > > sub controls. Otherwise, even handler mapping,
| ViewState
| > > | > loading
| > > | > | > | will
| > > | > | > | > > > occur
| > > | > | > | > > > > unexpectedly.
| > > | > | > | > > > >
| > > | > | > | > > > > #Do remember to assign a explicit ID for each sub
| > > | > controls(same
| > > | > | > | reason
| > > | > | > | > > as
| > > | > | > | > > > > #1). Also, please always try best to add subcontrols
| in
| > > the
| > > | > | > | > > > > "CreateChildControls" method(just create control
| > > hierarchy)
| > > | > and
| > > | > | > put
| > > | > | > | > > > > manipulating code in postback event or PreRender
| event.
| > > | > | > | > > > >
| > > | > | > | > > > > In addition, for your detaile scenario, I've just
| built
| > a
| > > | very
| > > | > | > | simple
| > > | > | > | > > demo
| > > | > | > | > > > > control which have three dropdownlists and The
"Top"
| > one
| > > | will
| > > | > | > | display
| > > | > | > | > > > > first(other twos invisible) and according to the top
| > one's
| > > | > | > | selection,
| > > | > | > | > > the
| > > | > | > | > > > > "Mid" dropdownlist will be pouplated and the same
when
| > the
| > > | > | "mid"'s
| > > | > | > | > > > > selection changed......
| > > | > | > | > > > >
| > > | > | > | > > > > Here's the control's code for your reference:
| > > | > | > | > > > >
| > > | > | > | > > > > =========================
| > > | > | > | > > > > [DefaultProperty("Text"),
| > > | > | > | > > > > ToolboxData("<{0}:MultiListControl
| > > | > | > | > > runat=server></{0}:MultiListControl>")]
| > > | > | > | > > > > public class MultiListControl :
| > > | > | > | System.Web.UI.WebControls.WebControl,
| > > | > | > | > > > > INamingContainer
| > > | > | > | > > > > {
| > > | > | > | > > > > private string text;
| > > | > | > | > > > >
| > > | > | > | > > > > private DropDownList lstTop;
| > > | > | > | > > > > private DropDownList lstMid;
| > > | > | > | > > > > private DropDownList lstBot;
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > protected bool MidVisible
| > > | > | > | > > > > {
| > > | > | > | > > > > get{
| > > | > | > | > > > > if(ViewState["MID_VISIBLE"] == null)
| > > | > | > | > > > > {
| > > | > | > | > > > > return false;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > return (bool)ViewState["MID_VISIBLE"];
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > set{
| > > | > | > | > > > > TrackViewState();
| > > | > | > | > > > > ViewState["MID_VISIBLE"] = value;
| > > | > | > | > > > > }
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > protected bool BotVisible
| > > | > | > | > > > > {
| > > | > | > | > > > > get
| > > | > | > | > > > > {
| > > | > | > | > > > > if(ViewState["BOT_VISIBLE"] == null)
| > > | > | > | > > > > {
| > > | > | > | > > > > return false;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > return (bool)ViewState["BOT_VISIBLE"];
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > set
| > > | > | > | > > > > {
| > > | > | > | > > > > TrackViewState();
| > > | > | > | > > > > ViewState["BOT_VISIBLE"] = value;
| > > | > | > | > > > > }
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > [Bindable(true),
| > > | > | > | > > > > Category("Appearance"),
| > > | > | > | > > > > DefaultValue("")]
| > > | > | > | > > > > public string Text
| > > | > | > | > > > > {
| > > | > | > | > > > > get
| > > | > | > | > > > > {
| > > | > | > | > > > > return text;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > set
| > > | > | > | > > > > {
| > > | > | > | > > > > text = value;
| > > | > | > | > > > > }
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > protected override void CreateChildControls()
| > > | > | > | > > > > {
| > > | > | > | > > > > Controls.Clear();
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"
| > > | > | > | > > > > <table width='100%'>
| > > | > | > | > > > > <tr><td>
| > > | > | > | > > > > "));
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop = new DropDownList();
| > > | > | > | > > > > lstTop.ID = "lstTop";
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop.Items.Add("----------");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_1");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_2");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_3");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_4");
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(lstTop);
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"<br/>"
| > > | > | > | > > > > ));
| > > | > | > | > > > >
| > > | > | > | > > > > lstMid = new DropDownList();
| > > | > | > | > > > > lstMid.ID = "lstMid";
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(lstMid);
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"<br/>"
| > > | > | > | > > > > ));
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > lstBot = new DropDownList();
| > > | > | > | > > > > lstBot.ID = "lstBot";
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(lstBot);
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"
| > > | > | > | > > > > </td></tr>
| > > | > | > | > > > > </table>
| > > | > | > | > > > > "
| > > | > | > | > > > > ));
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop.SelectedIndexChanged +=new
| > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > > | > | > | > > > > lstMid.SelectedIndexChanged +=new
| > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > > | > | > | > > > > lstBot.SelectedIndexChanged +=new
| > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop.AutoPostBack = lstMid.AutoPostBack =
| > > | > lstBot.AutoPostBack
| > > | > | =
| > > | > | > | > true;
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > protected override void OnPreRender(EventArgs e)
| > > | > | > | > > > > {
| > > | > | > | > > > > base.OnPreRender (e);
| > > | > | > | > > > >
| > > | > | > | > > > > lstMid.Visible = MidVisible;
| > > | > | > | > > > > lstBot.Visible = BotVisible;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > private void lst_SelectedIndexChanged(object sender,
| > > | > | > | System.EventArgs
| > > | > | > | > e)
| > > | > | > | > > > > {
| > > | > | > | > > > >
| > > | > | > | > > > > DropDownList lst = sender as DropDownList;
| > > | > | > | > > > >
| > > | > | > | > > > > switch(lst.ID)
| > > | > | > | > > > > {
| > > | > | > | > > > > case "lstTop":
| > > | > | > | > > > >
| > > | > | > | > > > > if(lst.SelectedIndex != 0)
| > > | > | > | > > > > {
| > > | > | > | > > > > lstMid.DataSource = GetSubItems(lst.SelectedValue);
| > > | > | > | > > > > lstMid.DataTextField = "Text";
| > > | > | > | > > > > lstMid.DataValueField= "Value";
| > > | > | > | > > > > lstMid.DataBind();
| > > | > | > | > > > >
| > > | > | > | > > > > MidVisible = true;
| > > | > | > | > > > > }
| > > | > | > | > > > > else
| > > | > | > | > > > > {
| > > | > | > | > > > > MidVisible = BotVisible = false;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > break;
| > > | > | > | > > > > case "lstMid":
| > > | > | > | > > > >
| > > | > | > | > > > > lstBot.DataSource = GetSubItems(lst.SelectedValue);
| > > | > | > | > > > > lstBot.DataTextField = "Text";
| > > | > | > | > > > > lstBot.DataValueField= "Value";
| > > | > | > | > > > > lstBot.DataBind();
| > > | > | > | > > > >
| > > | > | > | > > > > MidVisible = BotVisible = true;
| > > | > | > | > > > >
| > > | > | > | > > > > break;
| > > | > | > | > > > > case "lstBot":
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > break;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > Page.Response.Write("<br>" + lst.ID +
| > > | > "_selectedindexchanged!" +
| > > | > | > | > > > > lst.EnableViewState);
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > #region --Helper functions---
| > > | > | > | > > > >
| > > | > | > | > > > > public ListItemCollection GetSubItems(string parent)
| > > | > | > | > > > > {
| > > | > | > | > > > > ListItemCollection items = new ListItemCollection();
| > > | > | > | > > > > int count = parent.Length;
| > > | > | > | > > > >
| > > | > | > | > > > > for(int i=0;i<count;++i)
| > > | > | > | > > > > {
| > > | > | > | > > > > items.Add(parent + "_Item_" + i);
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > return items;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > #endregion
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > ========================
| > > | > | > | > > > > Hope helps. Thanks,
| > > | > | > | > > > >
| > > | > | > | > > > > Steven Cheng
| > > | > | > | > > > > Microsoft Online Support
| > > | > | > | > > > >
| > > | > | > | > > > > Get Secure! www.microsoft.com/security
| > > | > | > | > > > > (This posting is provided "AS IS", with no
warranties,
| > and
| > > | > | confers
| > > | > | > | no
| > > | > | > | > > > > rights.)
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > --------------------
| > > | > | > | > > > > | From: "TS" <[email protected]>
| > > | > | > | > > > > | References:
<[email protected]>
| > > | > | > | > > > > | Subject: Re: explanation of when need to
repopulate
| > > | control
| > > | > | > | > > > > | Date: Tue, 2 Aug 2005 18:32:23 -0500
| > > | > | > | > > > > | Lines: 39
| > > | > | > | > > > > | X-Priority: 3
| > > | > | > | > > > > | X-MSMail-Priority: Normal
| > > | > | > | > > > > | X-Newsreader: Microsoft Outlook Express
| 6.00.2800.1158
| > > | > | > | > > > > | X-MimeOLE: Produced By Microsoft MimeOLE
| > V6.00.2800.1165
| > > | > | > | > > > > | Message-ID:
<[email protected]>
| > > | > | > | > > > > | Newsgroups:
| > > | > | > | > > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > |
| > > | > | >
| > > | > |
| > > | >
| > > |
| > >
| >
|
microsoft.public.dotnet.framework.aspnet.webcontrols,microsoft.public.dotnet
| > > | > | > | > > > > framework.aspnet.buildingcontrols
| > > | > | > | > > > > | NNTP-Posting-Host: 103nat100.tea.state.tx.us
| > > | 198.214.103.100
| > > | > | > | > > > > | Path:
| > > | > | > | >
| > TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| > > | > | > | > > > > | Xref: TK2MSFTNGXA01.phx.gbl
| > > | > | > | > > > >
| > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols:3979
| > > | > | > | > > > >
| > microsoft.public.dotnet.framework.aspnet.webcontrols:10243
| > > | > | > | > > > > | X-Tomcat-NG:
| > > | > | > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | > | > > > > |
| > > | > | > | > > > > | sorry, heres the scenario i'm trying to
accomplish:
| > > | > | > | > > > > | I have a composite control that contains 4 drop
down
| > > | lists.
| > > | > | When
| > > | > | > | the
| > > | > | > | > > > page
| > > | > | > | > > > > | loads initially, i want the first drop down filled
| and
| > > the
| > > | > | rest
| > > | > | > | > > > invisible.
| > > | > | > | > > > > | When you select an item in this ddl, it posts back
| to
| > > the
| > > | > | server
| > > | > | > | and
| > > | > | > | > > > based
| > > | > | > | > > > > | on its value, it populates its immediate child's
| drop
| > > down
| > > | > | list.
| > > | > | > | So
| > > | > | > | > > now
| > > | > | > | > > > > the
| > > | > | > | > > > > | top ddl has a value selected and the 2nd one just
| has
| > > its
| > > | > | items
| > > | > | > | > > > populated.
| > > | > | > | > > > > | Then when the 2nd drop down list gets selected, it
| > posts
| > > | to
| > > | > | the
| > > | > | > | > server
| > > | > | > | > > > and
| > > | > | > | > > > > | its value is used to populate(filter) the items
for
| > the
| > > | 3rd
| > > | > | drop
| > > | > | > | > down
| > > | > | > | > > > > | list...and so on for each drop down list.
| > > | > | > | > > > > |
| > > | > | > | > > > > | Please tell me what i need to do to handle post
back
| > > data
| > > | > and
| > > | > | > | > maintain
| > > | > | > | > > > > state
| > > | > | > | > > > > | from one postback to another while keeping the
drop
| > > | > downlists
| > > | > | > | filled
| > > | > | > | > > and
| > > | > | > | > > > > | their values persisted.
| > > | > | > | > > > > |
| > > | > | > | > > > > | thank you again!
| > > | > | > | > > > > |
| > > | > | > | > > > > |
| > > | > | > | > > > > | | > > | > | > | > > > > | > I have a quesiton:
| > > | > | > | > > > > | > if i have a composite control and on its intial
| page
| > > | > | loading,
| > > | > | > i
| > > | > | > | > fill
| > > | > | > | > > > my
| > > | > | > | > > > > | (sub
| > > | > | > | > > > > | > control) drop down list's items collection from
| the
| > > | > database
| > > | > | > and
| > > | > | > | > > > return.
| > > | > | > | > > > > | > When the user hits a button to cause postback,
the
| > > | control
| > > | > | is
| > > | > | > | > going
| > > | > | > | > > to
| > > | > | > | > > > > get
| > > | > | > | > > > > | > initialized, then does its items collection
that i
| > > | filled
| > > | > on
| > > | > | > the
| > > | > | > | > > > initial
| > > | > | > | > > > > | > page request get repopulated from viewstate? And
| on
| > > top
| > > | of
| > > | > | > that,
| > > | > | > | > if
| > > | > | > | > > > so,
| > > | > | > | > > > > | does
| > > | > | > | > > > > | > the list item that person selected in the drop
| down
| > > list
| > > | > | again
| > > | > | > | set
| > > | > | > | > > > > itself
| > > | > | > | > > > > | as
| > > | > | > | > > > > | > the selected item in the list?
| > > | > | > | > > > > | >
| > > | > | > | > > > > | > OR do i have to re-load the items on every page
| > > request
| > > | > and
| > > | > | > then
| > > | > | > | > > > > populate
| > > | > | > | > > > > | > its value some other way???
| > > | > | > | > > > > | >
| > > | > | > | > > > > | > thanks a bunch
| > > | > | > | > > > > | >
| > > | > | > | > > > > | >
| > > | > | > | > > > > |
| > > | > | > | > > > > |
| > > | > | > | > > > > |
| > > | > | > | > > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > | >
| > > | > | > |
| > > | > | > |
| > > | > | > |
| > > | > | >
| > > | > |
| > > | > |
| > > | > |
| > > | >
| > > |
| > > |
| > > |
| > >
| >
| >
|
|
|
 
T

TS

ok, i will do that thanks


Steven Cheng said:
Hi TS,

You can mail me through the address by removing the "online" in the address
of my signature.

Thanks,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)
--------------------
| From: "TS" <[email protected]>
| References: <[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<unRs#[email protected]>
<[email protected]>
<#[email protected]>
<[email protected]>
<#[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
| Subject: Re: explanation of when need to repopulate control
| Date: Tue, 16 Aug 2005 15:44:51 -0500
| Lines: 1635
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <#[email protected]>
| Newsgroups: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| NNTP-Posting-Host: 101nat080.tea.state.tx.us 198.214.101.80
| Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| Xref: TK2MSFTNGXA01.phx.gbl
microsoft.public.dotnet.framework.aspnet.buildingcontrols:4058
| X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.buildingcontrols
|
| So what is happening is the same thing that was happening, the top most
| parent's event handler is called correctly, but its child's event is
| envoking the parent's event handler (the same one).
|
| | > Hey Steven, I have a problem while working with the same DataList
control.
| > That one problem that caused the wrong event handler to get called is
| > happening now. I am working on a different project using the same
control
| > that i got finished on the other project and trying to implement on this
| new
| > project, and it is set up almost the same. The only difference is that
on
| > this new one, i have added a postback step before the custom datalist
gets
| > loaded.
| >
| > Any ideas as why the wrong event handler is getting called?
| >
| > thanks
| >
| > | > > You're welcome TS.
| > >
| > > Glad that you've overcome the problem.
| > >
| > > Regards,
| > >
| > > Steven Cheng
| > > Microsoft Online Support
| > >
| > > Get Secure! www.microsoft.com/security
| > > (This posting is provided "AS IS", with no warranties, and confers no
| > > rights.)
| > > --------------------
| > > | From: "TS" <[email protected]>
| > > | References: <[email protected]>
| > > <[email protected]>
| > > <[email protected]>
| > > <[email protected]>
| > > <unRs#[email protected]>
| > > <[email protected]>
| > > <#[email protected]>
| > > <[email protected]>
| > > <#[email protected]>
| > > <[email protected]>
| > > | Subject: Re: explanation of when need to repopulate control
| > > | Date: Mon, 8 Aug 2005 12:50:32 -0500
| > > | Lines: 1445
| > > | X-Priority: 3
| > > | X-MSMail-Priority: Normal
| > > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > > | Message-ID: <[email protected]>
| > > | Newsgroups:
microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > > | Path:
TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| > > | Xref: TK2MSFTNGXA01.phx.gbl
| > > microsoft.public.dotnet.framework.aspnet.buildingcontrols:4014
| > > | X-Tomcat-NG:
microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > |
| > > | Well you were right that it had something to do with the custom
| control.
| > > The
| > > | datalist was trying to load itself during page load. i put the code
in
| > > Init,
| > > | and it worked.
| > > |
| > > | thanks steven
| > > |
| > > | | > > | > Thanks for your followup TS.
| > > | >
| > > | > So can I say that currently your custom webcontrol(not template
list
| > > | > control) can correctly be added both statically and dynamically in
| the
| > > | > normal DataList or Repeater controls (asp.net buildin ) , but
have
| > some
| > > | > problem for postback events when added in your custom list
control?
| > > | >
| > > | > If so, we should keep focus on the custom datalist control. Has it
| any
| > > | > problems when we nest some asp.net buildin controls in it? Would
you
| > try
| > > | > making a simplified version of your custom datalist control so
that
| we
| > > can
| > > | > have a view to see whether there is anything wrong in it. Also,
| it'll
| > be
| > > | > helpful you also provide the complete code that you dynamically
add
| > > | control
| > > | > into the datalist (through reflection).
| > > | >
| > > | > Thanks,
| > > | >
| > > | > Steven Cheng
| > > | > Microsoft Online Support
| > > | >
| > > | > Get Secure! www.microsoft.com/security
| > > | > (This posting is provided "AS IS", with no warranties, and confers
| no
| > > | > rights.)
| > > | >
| > > | > --------------------
| > > | > | From: "TS" <[email protected]>
| > > | > | References: <[email protected]>
| > > | > <[email protected]>
| > > | > <[email protected]>
| > > | > <[email protected]>
| > > | > <unRs#[email protected]>
| > > | > <[email protected]>
| > > | > <#[email protected]>
| > > | > <[email protected]>
| > > | > | Subject: Re: explanation of when need to repopulate control
| > > | > | Date: Fri, 5 Aug 2005 17:19:23 -0500
| > > | > | Lines: 1298
| > > | > | X-Priority: 3
| > > | > | X-MSMail-Priority: Normal
| > > | > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > > | > | Message-ID: <#[email protected]>
| > > | > | Newsgroups:
| > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > > | > | Path:
| > TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP15.phx.gbl
| > > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols:4003
| > > | > | X-Tomcat-NG:
| > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > |
| > > | > | I have a new problem now. I have figured out that the cause is
the
| > > same
| > > | > | reason. If its in the custom DataList, it doesn't work, else it
| does
| > > | work.
| > > | > |
| > > | > | The scenario:
| > > | > | After the initial page load, you enter data into controls and
hit
| > > submit
| > > | > | button, the process is as follows:
| > > | > | Page_Load
| > > | > | DataList's OnLoad
| > > | > | Composite Control's OnLoad
| > > | > | Submit button's OnClick - At this point, the controls in the
| > composite
| > > | > | control have no listitems and no selectedValue properties.
| > > | > |
| > > | > | I have statically added the composite control onto the same page
| as
| > > the
| > > | > | dynamic one, so here is the process in this scenario:
| > > | > | Page_Load
| > > | > | Composite Control's OnLoad (The one whose parent is Page)
| > > | > | DataList's OnLoad
| > > | > | Composite Control's OnLoad (The one whose parent is the Custom
| > > DataList)
| > > | > | Submit button's OnClick - At this point, the controls in the
| > > statically
| > > | > | declared composite control have listitems and have values for
| > > | > selectedValue
| > > | > | properties.
| > > | > |
| > > | > | So the same control at the same time - the one outside the
custom
| > > | Datalist
| > > | > | has its controls' state set up correctly, the ones inside does
| not.
| > > | > |
| > > | > | So the same reason is at play here. Maybe since i am dynamically
| > > | creating
| > > | > | the class using reflection (Assembly.CreateInstance()) that has
| > > | something
| > > | > to
| > > | > | do with it?
| > > | > |
| > > | > | Please help mr. Cheng.
| > > | > |
| > > | > | Thank you very much!
| > > | > |
| > > | > | TS
| > > | > |
| > > | > |
| > > | > |
| message
| > > | > | | > > | > | > Hi TS,
| > > | > | >
| > > | > | > First, I'm glad that you've got your composite control work,
all
| > the
| > > | > | > dropdownlist's postback events can fire correctly,yes?
| > > | > | >
| > > | > | > As for the new problem you encountered when adding your
| composite
| > > | > control
| > > | > | > into DataList's item, is the DataList the asp.net's buildin
| > DataList
| > > | > | > control? And since you mentioned that you dynamically add
your
| > > | control
| > > | > | > into it, how do you dynamically add your custom control? Will
| > there
| > > | > occur
| > > | > | > problem if you statically add your control into DataList?
| > > | > | >
| > > | > | > Thanks,
| > > | > | >
| > > | > | > Steven Cheng
| > > | > | > Microsoft Online Support
| > > | > | >
| > > | > | > Get Secure! www.microsoft.com/security
| > > | > | > (This posting is provided "AS IS", with no warranties, and
| confers
| > > no
| > > | > | > rights.)
| > > | > | >
| > > | > | > --------------------
| > > | > | > | From: "TS" <[email protected]>
| > > | > | > | References: <[email protected]>
| > > | > | > <[email protected]>
| > > | > | > <[email protected]>
| > > | > | > <[email protected]>
| > > | > | > <unRs#[email protected]>
| > > | > | > <[email protected]>
| > > | > | > | Subject: Re: explanation of when need to repopulate control
| > > | > | > | Date: Wed, 3 Aug 2005 19:07:16 -0500
| > > | > | > | Lines: 1153
| > > | > | > | X-Priority: 3
| > > | > | > | X-MSMail-Priority: Normal
| > > | > | > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > > | > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > > | > | > | Message-ID: <#[email protected]>
| > > | > | > | Newsgroups:
| > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > > | > | > | Path:
| > > | TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP14.phx.gbl
| > > | > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > > | > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols:3989
| > > | > | > | X-Tomcat-NG:
| > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | > |
| > > | > | > | Well Steve, I am almost done. My control works well, except
| its
| > > not
| > > | in
| > > | > | the
| > > | > | > | framework i just mentioned. Adding my control dynamically to
| the
| > > | > | > datalist's
| > > | > | > | item may be the root of the cause. i've made sure all custom
| > > | controls
| > > | > | > | implmenet INamingContainer & I think all controls have their
| > id's
| > > | set,
| > > | > | so
| > > | > | > | what else can i do?
| > > | > | > |
| > > | > | > | thanks a bunch
| > > | > | > |
| > > | > | > | | > > | > | > | > I have figured the cause of the problem, sort of. My main
| > > control
| > > | > was
| > > | > | > | being
| > > | > | > | > loaded dynamically during a custom data list control's
| > > | ItemDataBound
| > > | > | > | event,
| > > | > | > | > and then added to the e.item.controls collection. Once I
| > removed
| > > | it
| > > | > | from
| > > | > | > | > here, the correct event was called in my control. the
| problem
| > > is i
| > > | > | need
| > > | > | > to
| > > | > | > | > keep it where it is because of the way the page works.
| > > | > | > | >
| > > | > | > | > I tried to add INamingContainer to the custom Datalist,
but
| > that
| > > | > | didn't
| > > | > | > | > help. Any ideas what could make this happen?
| > > | > | > | >
| > > | > | > | > thanks so much, i know i'm being a pain, but i'm stuck!
| > > | > | > | >
| > > | > | > | > This is the custom DataLists' event:
| > > | > | > | > protected override void
| OnItemDataBound(DataListItemEventArgs
| > e)
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > base.OnItemDataBound(e);
| > > | > | > | >
| > > | > | > | > Parameter parameter = (Parameter)e.Item.DataItem;
| > > | > | > | >
| > > | > | > | > try
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > Control control;
| > > | > | > | >
| > > | > | > | > if(parameter.Type == ParameterType.Control)
| > > | > | > | >
| > > | > | > | > control = this.Page.LoadControl(parameter.ControlPath);
| > > | > | > | >
| > > | > | > | > else
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > Assembly assembly = parameter.Assembly;
| > > | > | > | >
| > > | > | > | > if(assembly == null)
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > // The control didn't declare its own assembly, so use the
| > > | report's
| > > | > | > | > ControlsAssembly
| > > | > | > | >
| > > | > | > | > assembly = this.ControlsAssembly;
| > > | > | > | >
| > > | > | > | > // Ther report's ControlsAssembly is null, so use current
| > page's
| > > | > | > assembly
| > > | > | > | >
| > > | > | > | > if(assembly == null)
| > > | > | > | >
| > > | > | > | > assembly = this.Page.GetType().BaseType.Assembly;
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | >
| > > | > | > | > control = (Control)
| > > | > | assembly.CreateInstance(parameter.ControlTypeName);
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > control.ID = parameter.Name;
| > > | > | > | >
| > > | > | > | > // Set up all the properties of this control from the
| > > | > | > parameter.properties
| > > | > | > | >
| > > | > | > | > foreach(DictionaryEntry de in parameter.Properties)
| > > | > | > | >
| > > | > | > | > SetProperty(de.Key.ToString(), de.Value.ToString(),
| control);
| > > | > | > | >
| > > | > | > | >
| > > | > | > | > e.Item.Controls.Add(control);
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > catch (Exception ex)
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > throw new ApplicationException("Unable to render criteria.
| > > Reason:
| > > | > " +
| > > | > | > | > ex.Message, ex);
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > | > > | > | > | > > In testing, i removed the main parent dropdown and only
| left
| > > the
| > > | 2
| > > | > | > below
| > > | > | > | > it.
| > > | > | > | > > this time, the same scenario happened...when the child
| > > dropdown
| > > | > list
| > > | > | > | > > autopostsback, it's immediate parent's
| selectedindexchanged
| > > | event
| > > | > | > fires!
| > > | > | > | I
| > > | > | > | > 'm
| > > | > | > | > > starting to pull my hair out now...I"m stuck!
| > > | > | > | > >
| > > | > | > | > > please help superman
| > > | > | > | > >
| > > | > | > | > > | > > | > | > | > > > Another problem:
| > > | > | > | > > >
| > > | > | > | > > > while i'm waiting on your remark to my last post, i
| > removed
| > > | the
| > > | > | sub
| > > | > | > | > > > composite controls from my composite control so that
| there
| > > is
| > > | > only
| > > | > | > | drop
| > > | > | > | > > down
| > > | > | > | > > > lists on it. During CreateChildcontrols, i load the
main
| > > drop
| > > | > down
| > > | > | > | using
| > > | > | > | > > > databind. When the page is sent to browser for the
first
| > > time,
| > > | i
| > > | > | > have
| > > | > | > | my
| > > | > | > | > > > main drop down filled. I then select an item and its
| > > | > | > | > SelectedIndexChanged
| > > | > | > | > > > fires and populates the send drop down list. Then
when i
| > > | select
| > > | > an
| > > | > | > | item
| > > | > | > | > > from
| > > | > | > | > > > it, it posts back, and the event that gets called is
the
| > > | > | main(first)
| > > | > | > | > > > dropdown list's SelectedIndexChanged event, which then
| > > | > | re-populates
| > > | > | > | the
| > > | > | > | > > > second drop down list, then the control returns to the
| > > browser
| > > | > | (The
| > > | > | > | > > > SelectedIndexChanged event never fired for the 2nd
| > > dropdown's
| > > | > | > changed
| > > | > | > | > > > event.???
| > > | > | > | > > >
| > > | > | > | > > > thanks again
| > > | > | > | > > >
| > > | > | > | > > > using System;
| > > | > | > | > > >
| > > | > | > | > > > using System.Collections.Specialized;
| > > | > | > | > > >
| > > | > | > | > > > using System.Web.UI;
| > > | > | > | > > >
| > > | > | > | > > > using System.Web.UI.WebControls;
| > > | > | > | > > >
| > > | > | > | > > > using System.Text;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Business;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Data;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Reporting;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Reporting.WebControls;
| > > | > | > | > > >
| > > | > | > | > > > namespace OperationsTeams.Web.ReportControls
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > /// <summary>
| > > | > | > | > > >
| > > | > | > | > > > /// Summary description for FiscalAgentHierarchy.
| > > | > | > | > > >
| > > | > | > | > > > /// </summary>
| > > | > | > | > > >
| > > | > | > | > > > public class FiscalAgentHierarchy : WebControl,
| > > | > | > | IReportParameterControl,
| > > | > | > | > > > INamingContainer
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > public FiscalAgentHierarchy()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@SchoolYear"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@ReportingGroup"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@FiscalAgentID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@FundingSourceID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@ProviderID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@SiteID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@ClassID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters["@SchoolYear"].Value = 2006;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > #region Events
| > > | > | > | > > >
| > > | > | > | > > > protected override void OnLoad(EventArgs e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > base.OnLoad (e);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > // The last state of controls from viewstate is now
| loaded
| > > | > (Before
| > > | > | > the
| > > | > | > | > > > client data is processed)
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > protected override void OnPreRender(EventArgs e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > base.OnPreRender (e);
| > > | > | > | > > >
| > > | > | > | > > > // The controls now have the client values from the
the
| > last
| > > | > | > postback
| > > | > | > | > > >
| > > | > | > | > > > // ddlFundingSource.Visible = FundingSourceVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlProviders.Visible = ProviderVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Visible = SiteVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlClasses.Visible = ClassVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("help","1"));
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("me","2"));
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Visible = true;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void
| > > | > rysReportingYearSelector_ReportingYearChanged(object
| > > | > | > | > sender,
| > > | > | > | > > > EventArgs e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > // this.LoadFundingSource();
| > > | > | > | > > >
| > > | > | > | > > > // this.LoadProviders();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void fasFiscalAgent_FiscalAgentChanged(object
| > > sender,
| > > | > | > | EventArgs
| > > | > | > | > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > this.LoadFundingSource();
| > > | > | > | > > >
| > > | > | > | > > > this.LoadProviders();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void
| ddlFundingSource_SelectedIndexChanged(object
| > > | > sender,
| > > | > | > | > > EventArgs
| > > | > | > | > > > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > LoadSites();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void ddlProviders_SelectedIndexChanged(object
| > > sender,
| > > | > | > | EventArgs
| > > | > | > | > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > LoadSites();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void ddlSites_SelectedIndexChanged(object
| sender,
| > > | > | EventArgs
| > > | > | > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > LoadClasses();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > protected override void CreateChildControls()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > this.ddlProviders = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > this.ddlSites = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > this.ddlClasses = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > ddlFundingSource.ID = FundingSourceControlId;
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.ID = ProvidersControlId;
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.ID = SitesControlId;
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.ID = ClassesControlId;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > LoadProviders();
| > > | > | > | > > >
| > > | > | > | > > > // start containing table
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(WebHelper.MakeLiteral("<table
| > > cellpadding=0
| > > | > | > | > > > cellspacing=0><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > > // this.Controls.Add(rysReportingYearSelector);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > > // this.Controls.Add(fasFiscalAgent);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>Funding
| > > | > | > | > > > Source</td><td>"));
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlFundingSource);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > |
| > > | > | >
| > > | > |
| > > | >
| > > |
| > >
| >
|
this.Controls.Add(WebHelper.MakeLiteral( said:
| > > | > | > | > > > );
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlProviders);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | >
| > > | > | >
| > > | >
| > >
|
this.Controls.Add(WebHelper.MakeLiteral( said:
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlSites);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > |
| > > | > | >
| > > | > |
| > > | >
| > > |
| > >
| >
|
this.Controls.Add(WebHelper.MakeLiteral( said:
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlClasses);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > > // end containing table
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > > ddlFundingSource.SelectedIndexChanged += new
| > > | > | > | > > > EventHandler(ddlFundingSource_SelectedIndexChanged);
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.SelectedIndexChanged += new
| > > | > | > | > > > EventHandler(ddlProviders_SelectedIndexChanged);
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.SelectedIndexChanged += new
| > > | > | > | > > > EventHandler(ddlSites_SelectedIndexChanged);
| > > | > | > | > > >
| > > | > | > | > > > ddlFundingSource.AutoPostBack =
| ddlProviders.AutoPostBack
| > =
| > > | > | > | > > > ddlSites.AutoPostBack = true;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadFundingSource()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > int fiscalAgentId =
| > > | > 1;//this.fasFiscalAgent.SelectedFiscalAgentId;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > if(fiscalAgentId != int.MinValue)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > FundingSourceVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataSource =
| > > | > | > | > FiscalAgentFunding.Find(fiscalAgentId);
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataTextField =
| "ShortDescription";
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataValueField = "CodeId";
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > if(this.ddlFundingSource.Items.Count > 1)
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.Items.Insert(0, new
| > > | ListItem(string.Empty,
| > > | > | > | > > > string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > FundingSourceVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadProviders()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > int fiscalAgentId =
| > > 1;//fasFiscalAgent.SelectedFiscalAgentId;
| > > | > | > | > > >
| > > | > | > | > > > if(fiscalAgentId != int.MinValue)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("help","1"));
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("me","2"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > ProviderVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > // are these dates correct???????????????????????????
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataSource =
| > > | > FiscalAgentProvider.Find(fiscalAgentId,
| > > | > | > new
| > > | > | > | > > > DateTime(2005,7,1), new
| > > | > | > | > > >
| > > | > | > |
| > > | >
| > DateTime(2006,6,30));//rysReportingYearSelector.ReportingYearStartDate,
| > > | > | > | > > > rysReportingYearSelector.ReportingYearEndDate); //
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataTextField = "ProviderName";
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataValueField = "ProviderId";
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.Items.Insert(0, new
ListItem(string.Empty,
| > > | > | > | string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > this.ddlProviders.Items.Clear();
| > > | > | > | > > >
| > > | > | > | > > > ProviderVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > // LoadSites();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadSites()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ddlProviders.SelectedValue != string.Empty)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > // Load the Site search parameters.
| > > | > | > | > > >
| > > | > | > | > > > SiteFindArgs siteFindArgs=new SiteFindArgs();
| > > | > | > | > > >
| > > | > | > | > > > siteFindArgs.FiscalAgentId=1;
| > > | > | > | > > >
//Convert.ToInt32(fasFiscalAgent.SelectedFiscalAgentId);
| > > | > | > | > > >
| > > | > | > | > > > SiteVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataSource =
Business.Site.Find(siteFindArgs);
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataTextField = "Name";
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataValueField = "SiteId";
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.Items.Insert(0, new ListItem(string.Empty,
| > > | > | string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.Items.Clear();
| > > | > | > | > > >
| > > | > | > | > > > SiteVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > // LoadClasses();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadClasses()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ddlSites.SelectedValue != string.Empty)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > AdultEdClassFindArgs adultEdClassFindArgs = new
| > > | > | > | AdultEdClassFindArgs();
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.FiscalAgentId =
| > > | > | > | > > > Convert.ToInt32(fasFiscalAgent.SelectedFiscalAgentId);
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.ReportingYearStartDate =
| > > | > | > | > > > rysReportingYearSelector.ReportingYearStartDate;
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.ReportingYearEndDate =
| > > | > | > | > > > rysReportingYearSelector.ReportingYearEndDate;
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.ProviderName =
| > > | > ddlProviders.SelectedValue;
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.SiteName =
| ddlSites.SelectedValue;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > ClassVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataSource =
| > > | AdultEdClass.Find(adultEdClassFindArgs);
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataTextField = "Name";
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataValueField = "ClassId";
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.Items.Insert(0, new ListItem(string.Empty,
| > > | > | > string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.Items.Clear();
| > > | > | > | > > >
| > > | > | > | > > > ClassVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > #region Public Properties
| > > | > | > | > > >
| > > | > | > | > > > #region IReportParameterControl Members
| > > | > | > | > > >
| > > | > | > | > > > public object ParameterValue
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get{ return null; }
| > > | > | > | > > >
| > > | > | > | > > > set{ /*do nothing */ }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > public ParameterCollection Parameters
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get{ return parameters; }
| > > | > | > | > > >
| > > | > | > | > > > set{ parameters = value;}
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > protected bool FundingSourceVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["FundingSourceVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["FundingSourceVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["FundingSourceVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > protected bool ProviderVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["ProviderVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["ProviderVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["ProviderVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > protected bool SiteVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["SiteVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["SiteVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["SiteVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > protected bool ClassVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["ClassVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["ClassVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["ClassVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > #region Private Member Variables
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlFundingSource;
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlProviders;
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlSites;
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlClasses;
| > > | > | > | > > >
| > > | > | > | > > > private ParameterCollection parameters = new
| > > | > | ParameterCollection();
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > #region Private Constants
| > > | > | > | > > >
| > > | > | > | > > > private const string ReportingYearSelectorControlId =
| > > | > | > | > > > "rysReportingYearSelector";
| > > | > | > | > > >
| > > | > | > | > > > private const string FiscalAgentSelectorControlId =
| > > | > | > | > > > "fasFiscalAgentSelector";
| > > | > | > | > > >
| > > | > | > | > > > private const string FundingSourceControlId =
| > > | > "ddlFundingSource";
| > > | > | > | > > >
| > > | > | > | > > > private const string FundingSourceLabelControlId =
| > > | > | > "lblFundingSource";
| > > | > | > | > > >
| > > | > | > | > > > private const string ProvidersControlId =
| "ddlProviders";
| > > | > | > | > > >
| > > | > | > | > > > private const string ProvidersLabelControlId =
| > > "lblProviders";
| > > | > | > | > > >
| > > | > | > | > > > private const string SitesControlId = "ddlSites";
| > > | > | > | > > >
| > > | > | > | > > > private const string SitesLabelControlId = "lblSites";
| > > | > | > | > > >
| > > | > | > | > > > private const string ClassesControlId = "ddlClasses";
| > > | > | > | > > >
| > > | > | > | > > > private const string ClassesLabelControlId =
| "lblClasses";
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > "Steven Cheng[MSFT]" <[email protected]>
| wrote
| > in
| > > | > | message
| > > | > | > | > > > | > > | > | > | > > > > Hi TS,
| > > | > | > | > > > >
| > > | > | > | > > > > See you again :), seems you're rushing in a asp.net
| > > project
| > > | > | these
| > > | > | > | > days?
| > > | > | > | > > > > For the question you mentioned in this post, here
are
| > some
| > > | of
| > > | > my
| > > | > | > | > > > > understanding and suggestions:
| > > | > | > | > > > >
| > > | > | > | > > > > 1. ASP.NET controls derived from Control will
| > > automatically
| > > | > | > maintain
| > > | > | > | > its
| > > | > | > | > > > > ViewStates according to the asp.net web page's
events
| > > | > sequence.
| > > | > | So
| > > | > | > | for
| > > | > | > | > > > > composite control, those nested sub Controls' status
| > > | > (properties
| > > | > | > | which
| > > | > | > | > > be
| > > | > | > | > > > > persistd in Viewsstate ) will be store and retrieve
| > > | > | automatically.
| > > | > | > | > > > >
| > > | > | > | > > > > 2. However, there're some thing we need to care when
| > > | building
| > > | > | > | > composite
| > > | > | > | > > > > control:
| > > | > | > | > > > > #remember to implement INamingContainer for controls
| > which
| > > | > will
| > > | > | > have
| > > | > | > | > > > nested
| > > | > | > | > > > > sub controls. Otherwise, even handler mapping,
| ViewState
| > > | > loading
| > > | > | > | will
| > > | > | > | > > > occur
| > > | > | > | > > > > unexpectedly.
| > > | > | > | > > > >
| > > | > | > | > > > > #Do remember to assign a explicit ID for each sub
| > > | > controls(same
| > > | > | > | reason
| > > | > | > | > > as
| > > | > | > | > > > > #1). Also, please always try best to add subcontrols
| in
| > > the
| > > | > | > | > > > > "CreateChildControls" method(just create control
| > > hierarchy)
| > > | > and
| > > | > | > put
| > > | > | > | > > > > manipulating code in postback event or PreRender
| event.
| > > | > | > | > > > >
| > > | > | > | > > > > In addition, for your detaile scenario, I've just
| built
| > a
| > > | very
| > > | > | > | simple
| > > | > | > | > > demo
| > > | > | > | > > > > control which have three dropdownlists and The
"Top"
| > one
| > > | will
| > > | > | > | display
| > > | > | > | > > > > first(other twos invisible) and according to the top
| > one's
| > > | > | > | selection,
| > > | > | > | > > the
| > > | > | > | > > > > "Mid" dropdownlist will be pouplated and the same
when
| > the
| > > | > | "mid"'s
| > > | > | > | > > > > selection changed......
| > > | > | > | > > > >
| > > | > | > | > > > > Here's the control's code for your reference:
| > > | > | > | > > > >
| > > | > | > | > > > > =========================
| > > | > | > | > > > > [DefaultProperty("Text"),
| > > | > | > | > > > > ToolboxData("<{0}:MultiListControl
| > > | > | > | > > runat=server></{0}:MultiListControl>")]
| > > | > | > | > > > > public class MultiListControl :
| > > | > | > | System.Web.UI.WebControls.WebControl,
| > > | > | > | > > > > INamingContainer
| > > | > | > | > > > > {
| > > | > | > | > > > > private string text;
| > > | > | > | > > > >
| > > | > | > | > > > > private DropDownList lstTop;
| > > | > | > | > > > > private DropDownList lstMid;
| > > | > | > | > > > > private DropDownList lstBot;
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > protected bool MidVisible
| > > | > | > | > > > > {
| > > | > | > | > > > > get{
| > > | > | > | > > > > if(ViewState["MID_VISIBLE"] == null)
| > > | > | > | > > > > {
| > > | > | > | > > > > return false;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > return (bool)ViewState["MID_VISIBLE"];
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > set{
| > > | > | > | > > > > TrackViewState();
| > > | > | > | > > > > ViewState["MID_VISIBLE"] = value;
| > > | > | > | > > > > }
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > protected bool BotVisible
| > > | > | > | > > > > {
| > > | > | > | > > > > get
| > > | > | > | > > > > {
| > > | > | > | > > > > if(ViewState["BOT_VISIBLE"] == null)
| > > | > | > | > > > > {
| > > | > | > | > > > > return false;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > return (bool)ViewState["BOT_VISIBLE"];
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > set
| > > | > | > | > > > > {
| > > | > | > | > > > > TrackViewState();
| > > | > | > | > > > > ViewState["BOT_VISIBLE"] = value;
| > > | > | > | > > > > }
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > [Bindable(true),
| > > | > | > | > > > > Category("Appearance"),
| > > | > | > | > > > > DefaultValue("")]
| > > | > | > | > > > > public string Text
| > > | > | > | > > > > {
| > > | > | > | > > > > get
| > > | > | > | > > > > {
| > > | > | > | > > > > return text;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > set
| > > | > | > | > > > > {
| > > | > | > | > > > > text = value;
| > > | > | > | > > > > }
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > protected override void CreateChildControls()
| > > | > | > | > > > > {
| > > | > | > | > > > > Controls.Clear();
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"
| > > | > | > | > > > > <table width='100%'>
| > > | > | > | > > > > <tr><td>
| > > | > | > | > > > > "));
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop = new DropDownList();
| > > | > | > | > > > > lstTop.ID = "lstTop";
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop.Items.Add("----------");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_1");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_2");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_3");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_4");
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(lstTop);
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"<br/>"
| > > | > | > | > > > > ));
| > > | > | > | > > > >
| > > | > | > | > > > > lstMid = new DropDownList();
| > > | > | > | > > > > lstMid.ID = "lstMid";
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(lstMid);
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"<br/>"
| > > | > | > | > > > > ));
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > lstBot = new DropDownList();
| > > | > | > | > > > > lstBot.ID = "lstBot";
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(lstBot);
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"
| > > | > | > | > > > > </td></tr>
| > > | > | > | > > > > </table>
| > > | > | > | > > > > "
| > > | > | > | > > > > ));
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop.SelectedIndexChanged +=new
| > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > > | > | > | > > > > lstMid.SelectedIndexChanged +=new
| > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > > | > | > | > > > > lstBot.SelectedIndexChanged +=new
| > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop.AutoPostBack = lstMid.AutoPostBack =
| > > | > lstBot.AutoPostBack
| > > | > | =
| > > | > | > | > true;
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > protected override void OnPreRender(EventArgs e)
| > > | > | > | > > > > {
| > > | > | > | > > > > base.OnPreRender (e);
| > > | > | > | > > > >
| > > | > | > | > > > > lstMid.Visible = MidVisible;
| > > | > | > | > > > > lstBot.Visible = BotVisible;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > private void lst_SelectedIndexChanged(object sender,
| > > | > | > | System.EventArgs
| > > | > | > | > e)
| > > | > | > | > > > > {
| > > | > | > | > > > >
| > > | > | > | > > > > DropDownList lst = sender as DropDownList;
| > > | > | > | > > > >
| > > | > | > | > > > > switch(lst.ID)
| > > | > | > | > > > > {
| > > | > | > | > > > > case "lstTop":
| > > | > | > | > > > >
| > > | > | > | > > > > if(lst.SelectedIndex != 0)
| > > | > | > | > > > > {
| > > | > | > | > > > > lstMid.DataSource = GetSubItems(lst.SelectedValue);
| > > | > | > | > > > > lstMid.DataTextField = "Text";
| > > | > | > | > > > > lstMid.DataValueField= "Value";
| > > | > | > | > > > > lstMid.DataBind();
| > > | > | > | > > > >
| > > | > | > | > > > > MidVisible = true;
| > > | > | > | > > > > }
| > > | > | > | > > > > else
| > > | > | > | > > > > {
| > > | > | > | > > > > MidVisible = BotVisible = false;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > break;
| > > | > | > | > > > > case "lstMid":
| > > | > | > | > > > >
| > > | > | > | > > > > lstBot.DataSource = GetSubItems(lst.SelectedValue);
| > > | > | > | > > > > lstBot.DataTextField = "Text";
| > > | > | > | > > > > lstBot.DataValueField= "Value";
| > > | > | > | > > > > lstBot.DataBind();
| > > | > | > | > > > >
| > > | > | > | > > > > MidVisible = BotVisible = true;
| > > | > | > | > > > >
| > > | > | > | > > > > break;
| > > | > | > | > > > > case "lstBot":
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > break;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > Page.Response.Write("<br>" + lst.ID +
| > > | > "_selectedindexchanged!" +
| > > | > | > | > > > > lst.EnableViewState);
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > #region --Helper functions---
| > > | > | > | > > > >
| > > | > | > | > > > > public ListItemCollection GetSubItems(string parent)
| > > | > | > | > > > > {
| > > | > | > | > > > > ListItemCollection items = new ListItemCollection();
| > > | > | > | > > > > int count = parent.Length;
| > > | > | > | > > > >
| > > | > | > | > > > > for(int i=0;i<count;++i)
| > > | > | > | > > > > {
| > > | > | > | > > > > items.Add(parent + "_Item_" + i);
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > return items;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > #endregion
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > ========================
| > > | > | > | > > > > Hope helps. Thanks,
| > > | > | > | > > > >
| > > | > | > | > > > > Steven Cheng
| > > | > | > | > > > > Microsoft Online Support
| > > | > | > | > > > >
| > > | > | > | > > > > Get Secure! www.microsoft.com/security
| > > | > | > | > > > > (This posting is provided "AS IS", with no
warranties,
| > and
| > > | > | confers
| > > | > | > | no
| > > | > | > | > > > > rights.)
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > --------------------
| > > | > | > | > > > > | From: "TS" <[email protected]>
| > > | > | > | > > > > | References:
<[email protected]>
| > > | > | > | > > > > | Subject: Re: explanation of when need to
repopulate
| > > | control
| > > | > | > | > > > > | Date: Tue, 2 Aug 2005 18:32:23 -0500
| > > | > | > | > > > > | Lines: 39
| > > | > | > | > > > > | X-Priority: 3
| > > | > | > | > > > > | X-MSMail-Priority: Normal
| > > | > | > | > > > > | X-Newsreader: Microsoft Outlook Express
| 6.00.2800.1158
| > > | > | > | > > > > | X-MimeOLE: Produced By Microsoft MimeOLE
| > V6.00.2800.1165
| > > | > | > | > > > > | Message-ID:
<[email protected]>
| > > | > | > | > > > > | Newsgroups:
| > > | > | > | > > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > |
| > > | > | >
| > > | > |
| > > | >
| > > |
| > >
| >
|
microsoft.public.dotnet.framework.aspnet.webcontrols,microsoft.public.dotnet
| > > | > | > | > > > > framework.aspnet.buildingcontrols
| > > | > | > | > > > > | NNTP-Posting-Host: 103nat100.tea.state.tx.us
| > > | 198.214.103.100
| > > | > | > | > > > > | Path:
| > > | > | > | >
| > TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| > > | > | > | > > > > | Xref: TK2MSFTNGXA01.phx.gbl
| > > | > | > | > > > >
| > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols:3979
| > > | > | > | > > > >
| > microsoft.public.dotnet.framework.aspnet.webcontrols:10243
| > > | > | > | > > > > | X-Tomcat-NG:
| > > | > | > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | > | > > > > |
| > > | > | > | > > > > | sorry, heres the scenario i'm trying to
accomplish:
| > > | > | > | > > > > | I have a composite control that contains 4 drop
down
| > > | lists.
| > > | > | When
| > > | > | > | the
| > > | > | > | > > > page
| > > | > | > | > > > > | loads initially, i want the first drop down filled
| and
| > > the
| > > | > | rest
| > > | > | > | > > > invisible.
| > > | > | > | > > > > | When you select an item in this ddl, it posts back
| to
| > > the
| > > | > | server
| > > | > | > | and
| > > | > | > | > > > based
| > > | > | > | > > > > | on its value, it populates its immediate child's
| drop
| > > down
| > > | > | list.
| > > | > | > | So
| > > | > | > | > > now
| > > | > | > | > > > > the
| > > | > | > | > > > > | top ddl has a value selected and the 2nd one just
| has
| > > its
| > > | > | items
| > > | > | > | > > > populated.
| > > | > | > | > > > > | Then when the 2nd drop down list gets selected, it
| > posts
| > > | to
| > > | > | the
| > > | > | > | > server
| > > | > | > | > > > and
| > > | > | > | > > > > | its value is used to populate(filter) the items
for
| > the
| > > | 3rd
| > > | > | drop
| > > | > | > | > down
| > > | > | > | > > > > | list...and so on for each drop down list.
| > > | > | > | > > > > |
| > > | > | > | > > > > | Please tell me what i need to do to handle post
back
| > > data
| > > | > and
| > > | > | > | > maintain
| > > | > | > | > > > > state
| > > | > | > | > > > > | from one postback to another while keeping the
drop
| > > | > downlists
| > > | > | > | filled
| > > | > | > | > > and
| > > | > | > | > > > > | their values persisted.
| > > | > | > | > > > > |
| > > | > | > | > > > > | thank you again!
| > > | > | > | > > > > |
| > > | > | > | > > > > |
| > > | > | > | > > > > | | > > | > | > | > > > > | > I have a quesiton:
| > > | > | > | > > > > | > if i have a composite control and on its intial
| page
| > > | > | loading,
| > > | > | > i
| > > | > | > | > fill
| > > | > | > | > > > my
| > > | > | > | > > > > | (sub
| > > | > | > | > > > > | > control) drop down list's items collection from
| the
| > > | > database
| > > | > | > and
| > > | > | > | > > > return.
| > > | > | > | > > > > | > When the user hits a button to cause postback,
the
| > > | control
| > > | > | is
| > > | > | > | > going
| > > | > | > | > > to
| > > | > | > | > > > > get
| > > | > | > | > > > > | > initialized, then does its items collection
that i
| > > | filled
| > > | > on
| > > | > | > the
| > > | > | > | > > > initial
| > > | > | > | > > > > | > page request get repopulated from viewstate? And
| on
| > > top
| > > | of
| > > | > | > that,
| > > | > | > | > if
| > > | > | > | > > > so,
| > > | > | > | > > > > | does
| > > | > | > | > > > > | > the list item that person selected in the drop
| down
| > > list
| > > | > | again
| > > | > | > | set
| > > | > | > | > > > > itself
| > > | > | > | > > > > | as
| > > | > | > | > > > > | > the selected item in the list?
| > > | > | > | > > > > | >
| > > | > | > | > > > > | > OR do i have to re-load the items on every page
| > > request
| > > | > and
| > > | > | > then
| > > | > | > | > > > > populate
| > > | > | > | > > > > | > its value some other way???
| > > | > | > | > > > > | >
| > > | > | > | > > > > | > thanks a bunch
| > > | > | > | > > > > | >
| > > | > | > | > > > > | >
| > > | > | > | > > > > |
| > > | > | > | > > > > |
| > > | > | > | > > > > |
| > > | > | > | > > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > | >
| > > | > | > |
| > > | > | > |
| > > | > | > |
| > > | > | >
| > > | > |
| > > | > |
| > > | > |
| > > | >
| > > |
| > > |
| > > |
| > >
| >
| >
|
|
|
 
T

TS

Did you get it?

please respond here with updates. Thanks

Steven Cheng said:
Hi TS,

You can mail me through the address by removing the "online" in the address
of my signature.

Thanks,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)
--------------------
| From: "TS" <[email protected]>
| References: <[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<unRs#[email protected]>
<[email protected]>
<#[email protected]>
<[email protected]>
<#[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
| Subject: Re: explanation of when need to repopulate control
| Date: Tue, 16 Aug 2005 15:44:51 -0500
| Lines: 1635
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <#[email protected]>
| Newsgroups: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| NNTP-Posting-Host: 101nat080.tea.state.tx.us 198.214.101.80
| Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| Xref: TK2MSFTNGXA01.phx.gbl
microsoft.public.dotnet.framework.aspnet.buildingcontrols:4058
| X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.buildingcontrols
|
| So what is happening is the same thing that was happening, the top most
| parent's event handler is called correctly, but its child's event is
| envoking the parent's event handler (the same one).
|
| | > Hey Steven, I have a problem while working with the same DataList
control.
| > That one problem that caused the wrong event handler to get called is
| > happening now. I am working on a different project using the same
control
| > that i got finished on the other project and trying to implement on this
| new
| > project, and it is set up almost the same. The only difference is that
on
| > this new one, i have added a postback step before the custom datalist
gets
| > loaded.
| >
| > Any ideas as why the wrong event handler is getting called?
| >
| > thanks
| >
| > | > > You're welcome TS.
| > >
| > > Glad that you've overcome the problem.
| > >
| > > Regards,
| > >
| > > Steven Cheng
| > > Microsoft Online Support
| > >
| > > Get Secure! www.microsoft.com/security
| > > (This posting is provided "AS IS", with no warranties, and confers no
| > > rights.)
| > > --------------------
| > > | From: "TS" <[email protected]>
| > > | References: <[email protected]>
| > > <[email protected]>
| > > <[email protected]>
| > > <[email protected]>
| > > <unRs#[email protected]>
| > > <[email protected]>
| > > <#[email protected]>
| > > <[email protected]>
| > > <#[email protected]>
| > > <[email protected]>
| > > | Subject: Re: explanation of when need to repopulate control
| > > | Date: Mon, 8 Aug 2005 12:50:32 -0500
| > > | Lines: 1445
| > > | X-Priority: 3
| > > | X-MSMail-Priority: Normal
| > > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > > | Message-ID: <[email protected]>
| > > | Newsgroups:
microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > > | Path:
TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| > > | Xref: TK2MSFTNGXA01.phx.gbl
| > > microsoft.public.dotnet.framework.aspnet.buildingcontrols:4014
| > > | X-Tomcat-NG:
microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > |
| > > | Well you were right that it had something to do with the custom
| control.
| > > The
| > > | datalist was trying to load itself during page load. i put the code
in
| > > Init,
| > > | and it worked.
| > > |
| > > | thanks steven
| > > |
| > > | | > > | > Thanks for your followup TS.
| > > | >
| > > | > So can I say that currently your custom webcontrol(not template
list
| > > | > control) can correctly be added both statically and dynamically in
| the
| > > | > normal DataList or Repeater controls (asp.net buildin ) , but
have
| > some
| > > | > problem for postback events when added in your custom list
control?
| > > | >
| > > | > If so, we should keep focus on the custom datalist control. Has it
| any
| > > | > problems when we nest some asp.net buildin controls in it? Would
you
| > try
| > > | > making a simplified version of your custom datalist control so
that
| we
| > > can
| > > | > have a view to see whether there is anything wrong in it. Also,
| it'll
| > be
| > > | > helpful you also provide the complete code that you dynamically
add
| > > | control
| > > | > into the datalist (through reflection).
| > > | >
| > > | > Thanks,
| > > | >
| > > | > Steven Cheng
| > > | > Microsoft Online Support
| > > | >
| > > | > Get Secure! www.microsoft.com/security
| > > | > (This posting is provided "AS IS", with no warranties, and confers
| no
| > > | > rights.)
| > > | >
| > > | > --------------------
| > > | > | From: "TS" <[email protected]>
| > > | > | References: <[email protected]>
| > > | > <[email protected]>
| > > | > <[email protected]>
| > > | > <[email protected]>
| > > | > <unRs#[email protected]>
| > > | > <[email protected]>
| > > | > <#[email protected]>
| > > | > <[email protected]>
| > > | > | Subject: Re: explanation of when need to repopulate control
| > > | > | Date: Fri, 5 Aug 2005 17:19:23 -0500
| > > | > | Lines: 1298
| > > | > | X-Priority: 3
| > > | > | X-MSMail-Priority: Normal
| > > | > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > > | > | Message-ID: <#[email protected]>
| > > | > | Newsgroups:
| > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > > | > | Path:
| > TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP15.phx.gbl
| > > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols:4003
| > > | > | X-Tomcat-NG:
| > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > |
| > > | > | I have a new problem now. I have figured out that the cause is
the
| > > same
| > > | > | reason. If its in the custom DataList, it doesn't work, else it
| does
| > > | work.
| > > | > |
| > > | > | The scenario:
| > > | > | After the initial page load, you enter data into controls and
hit
| > > submit
| > > | > | button, the process is as follows:
| > > | > | Page_Load
| > > | > | DataList's OnLoad
| > > | > | Composite Control's OnLoad
| > > | > | Submit button's OnClick - At this point, the controls in the
| > composite
| > > | > | control have no listitems and no selectedValue properties.
| > > | > |
| > > | > | I have statically added the composite control onto the same page
| as
| > > the
| > > | > | dynamic one, so here is the process in this scenario:
| > > | > | Page_Load
| > > | > | Composite Control's OnLoad (The one whose parent is Page)
| > > | > | DataList's OnLoad
| > > | > | Composite Control's OnLoad (The one whose parent is the Custom
| > > DataList)
| > > | > | Submit button's OnClick - At this point, the controls in the
| > > statically
| > > | > | declared composite control have listitems and have values for
| > > | > selectedValue
| > > | > | properties.
| > > | > |
| > > | > | So the same control at the same time - the one outside the
custom
| > > | Datalist
| > > | > | has its controls' state set up correctly, the ones inside does
| not.
| > > | > |
| > > | > | So the same reason is at play here. Maybe since i am dynamically
| > > | creating
| > > | > | the class using reflection (Assembly.CreateInstance()) that has
| > > | something
| > > | > to
| > > | > | do with it?
| > > | > |
| > > | > | Please help mr. Cheng.
| > > | > |
| > > | > | Thank you very much!
| > > | > |
| > > | > | TS
| > > | > |
| > > | > |
| > > | > |
| message
| > > | > | | > > | > | > Hi TS,
| > > | > | >
| > > | > | > First, I'm glad that you've got your composite control work,
all
| > the
| > > | > | > dropdownlist's postback events can fire correctly,yes?
| > > | > | >
| > > | > | > As for the new problem you encountered when adding your
| composite
| > > | > control
| > > | > | > into DataList's item, is the DataList the asp.net's buildin
| > DataList
| > > | > | > control? And since you mentioned that you dynamically add
your
| > > | control
| > > | > | > into it, how do you dynamically add your custom control? Will
| > there
| > > | > occur
| > > | > | > problem if you statically add your control into DataList?
| > > | > | >
| > > | > | > Thanks,
| > > | > | >
| > > | > | > Steven Cheng
| > > | > | > Microsoft Online Support
| > > | > | >
| > > | > | > Get Secure! www.microsoft.com/security
| > > | > | > (This posting is provided "AS IS", with no warranties, and
| confers
| > > no
| > > | > | > rights.)
| > > | > | >
| > > | > | > --------------------
| > > | > | > | From: "TS" <[email protected]>
| > > | > | > | References: <[email protected]>
| > > | > | > <[email protected]>
| > > | > | > <[email protected]>
| > > | > | > <[email protected]>
| > > | > | > <unRs#[email protected]>
| > > | > | > <[email protected]>
| > > | > | > | Subject: Re: explanation of when need to repopulate control
| > > | > | > | Date: Wed, 3 Aug 2005 19:07:16 -0500
| > > | > | > | Lines: 1153
| > > | > | > | X-Priority: 3
| > > | > | > | X-MSMail-Priority: Normal
| > > | > | > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > > | > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > > | > | > | Message-ID: <#[email protected]>
| > > | > | > | Newsgroups:
| > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > > | > | > | Path:
| > > | TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP14.phx.gbl
| > > | > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > > | > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols:3989
| > > | > | > | X-Tomcat-NG:
| > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | > |
| > > | > | > | Well Steve, I am almost done. My control works well, except
| its
| > > not
| > > | in
| > > | > | the
| > > | > | > | framework i just mentioned. Adding my control dynamically to
| the
| > > | > | > datalist's
| > > | > | > | item may be the root of the cause. i've made sure all custom
| > > | controls
| > > | > | > | implmenet INamingContainer & I think all controls have their
| > id's
| > > | set,
| > > | > | so
| > > | > | > | what else can i do?
| > > | > | > |
| > > | > | > | thanks a bunch
| > > | > | > |
| > > | > | > | | > > | > | > | > I have figured the cause of the problem, sort of. My main
| > > control
| > > | > was
| > > | > | > | being
| > > | > | > | > loaded dynamically during a custom data list control's
| > > | ItemDataBound
| > > | > | > | event,
| > > | > | > | > and then added to the e.item.controls collection. Once I
| > removed
| > > | it
| > > | > | from
| > > | > | > | > here, the correct event was called in my control. the
| problem
| > > is i
| > > | > | need
| > > | > | > to
| > > | > | > | > keep it where it is because of the way the page works.
| > > | > | > | >
| > > | > | > | > I tried to add INamingContainer to the custom Datalist,
but
| > that
| > > | > | didn't
| > > | > | > | > help. Any ideas what could make this happen?
| > > | > | > | >
| > > | > | > | > thanks so much, i know i'm being a pain, but i'm stuck!
| > > | > | > | >
| > > | > | > | > This is the custom DataLists' event:
| > > | > | > | > protected override void
| OnItemDataBound(DataListItemEventArgs
| > e)
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > base.OnItemDataBound(e);
| > > | > | > | >
| > > | > | > | > Parameter parameter = (Parameter)e.Item.DataItem;
| > > | > | > | >
| > > | > | > | > try
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > Control control;
| > > | > | > | >
| > > | > | > | > if(parameter.Type == ParameterType.Control)
| > > | > | > | >
| > > | > | > | > control = this.Page.LoadControl(parameter.ControlPath);
| > > | > | > | >
| > > | > | > | > else
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > Assembly assembly = parameter.Assembly;
| > > | > | > | >
| > > | > | > | > if(assembly == null)
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > // The control didn't declare its own assembly, so use the
| > > | report's
| > > | > | > | > ControlsAssembly
| > > | > | > | >
| > > | > | > | > assembly = this.ControlsAssembly;
| > > | > | > | >
| > > | > | > | > // Ther report's ControlsAssembly is null, so use current
| > page's
| > > | > | > assembly
| > > | > | > | >
| > > | > | > | > if(assembly == null)
| > > | > | > | >
| > > | > | > | > assembly = this.Page.GetType().BaseType.Assembly;
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | >
| > > | > | > | > control = (Control)
| > > | > | assembly.CreateInstance(parameter.ControlTypeName);
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > control.ID = parameter.Name;
| > > | > | > | >
| > > | > | > | > // Set up all the properties of this control from the
| > > | > | > parameter.properties
| > > | > | > | >
| > > | > | > | > foreach(DictionaryEntry de in parameter.Properties)
| > > | > | > | >
| > > | > | > | > SetProperty(de.Key.ToString(), de.Value.ToString(),
| control);
| > > | > | > | >
| > > | > | > | >
| > > | > | > | > e.Item.Controls.Add(control);
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > catch (Exception ex)
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > throw new ApplicationException("Unable to render criteria.
| > > Reason:
| > > | > " +
| > > | > | > | > ex.Message, ex);
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > | > > | > | > | > > In testing, i removed the main parent dropdown and only
| left
| > > the
| > > | 2
| > > | > | > below
| > > | > | > | > it.
| > > | > | > | > > this time, the same scenario happened...when the child
| > > dropdown
| > > | > list
| > > | > | > | > > autopostsback, it's immediate parent's
| selectedindexchanged
| > > | event
| > > | > | > fires!
| > > | > | > | I
| > > | > | > | > 'm
| > > | > | > | > > starting to pull my hair out now...I"m stuck!
| > > | > | > | > >
| > > | > | > | > > please help superman
| > > | > | > | > >
| > > | > | > | > > | > > | > | > | > > > Another problem:
| > > | > | > | > > >
| > > | > | > | > > > while i'm waiting on your remark to my last post, i
| > removed
| > > | the
| > > | > | sub
| > > | > | > | > > > composite controls from my composite control so that
| there
| > > is
| > > | > only
| > > | > | > | drop
| > > | > | > | > > down
| > > | > | > | > > > lists on it. During CreateChildcontrols, i load the
main
| > > drop
| > > | > down
| > > | > | > | using
| > > | > | > | > > > databind. When the page is sent to browser for the
first
| > > time,
| > > | i
| > > | > | > have
| > > | > | > | my
| > > | > | > | > > > main drop down filled. I then select an item and its
| > > | > | > | > SelectedIndexChanged
| > > | > | > | > > > fires and populates the send drop down list. Then
when i
| > > | select
| > > | > an
| > > | > | > | item
| > > | > | > | > > from
| > > | > | > | > > > it, it posts back, and the event that gets called is
the
| > > | > | main(first)
| > > | > | > | > > > dropdown list's SelectedIndexChanged event, which then
| > > | > | re-populates
| > > | > | > | the
| > > | > | > | > > > second drop down list, then the control returns to the
| > > browser
| > > | > | (The
| > > | > | > | > > > SelectedIndexChanged event never fired for the 2nd
| > > dropdown's
| > > | > | > changed
| > > | > | > | > > > event.???
| > > | > | > | > > >
| > > | > | > | > > > thanks again
| > > | > | > | > > >
| > > | > | > | > > > using System;
| > > | > | > | > > >
| > > | > | > | > > > using System.Collections.Specialized;
| > > | > | > | > > >
| > > | > | > | > > > using System.Web.UI;
| > > | > | > | > > >
| > > | > | > | > > > using System.Web.UI.WebControls;
| > > | > | > | > > >
| > > | > | > | > > > using System.Text;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Business;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Data;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Reporting;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Reporting.WebControls;
| > > | > | > | > > >
| > > | > | > | > > > namespace OperationsTeams.Web.ReportControls
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > /// <summary>
| > > | > | > | > > >
| > > | > | > | > > > /// Summary description for FiscalAgentHierarchy.
| > > | > | > | > > >
| > > | > | > | > > > /// </summary>
| > > | > | > | > > >
| > > | > | > | > > > public class FiscalAgentHierarchy : WebControl,
| > > | > | > | IReportParameterControl,
| > > | > | > | > > > INamingContainer
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > public FiscalAgentHierarchy()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@SchoolYear"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@ReportingGroup"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@FiscalAgentID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@FundingSourceID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@ProviderID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@SiteID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@ClassID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters["@SchoolYear"].Value = 2006;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > #region Events
| > > | > | > | > > >
| > > | > | > | > > > protected override void OnLoad(EventArgs e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > base.OnLoad (e);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > // The last state of controls from viewstate is now
| loaded
| > > | > (Before
| > > | > | > the
| > > | > | > | > > > client data is processed)
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > protected override void OnPreRender(EventArgs e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > base.OnPreRender (e);
| > > | > | > | > > >
| > > | > | > | > > > // The controls now have the client values from the
the
| > last
| > > | > | > postback
| > > | > | > | > > >
| > > | > | > | > > > // ddlFundingSource.Visible = FundingSourceVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlProviders.Visible = ProviderVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Visible = SiteVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlClasses.Visible = ClassVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("help","1"));
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("me","2"));
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Visible = true;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void
| > > | > rysReportingYearSelector_ReportingYearChanged(object
| > > | > | > | > sender,
| > > | > | > | > > > EventArgs e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > // this.LoadFundingSource();
| > > | > | > | > > >
| > > | > | > | > > > // this.LoadProviders();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void fasFiscalAgent_FiscalAgentChanged(object
| > > sender,
| > > | > | > | EventArgs
| > > | > | > | > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > this.LoadFundingSource();
| > > | > | > | > > >
| > > | > | > | > > > this.LoadProviders();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void
| ddlFundingSource_SelectedIndexChanged(object
| > > | > sender,
| > > | > | > | > > EventArgs
| > > | > | > | > > > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > LoadSites();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void ddlProviders_SelectedIndexChanged(object
| > > sender,
| > > | > | > | EventArgs
| > > | > | > | > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > LoadSites();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void ddlSites_SelectedIndexChanged(object
| sender,
| > > | > | EventArgs
| > > | > | > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > LoadClasses();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > protected override void CreateChildControls()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > this.ddlProviders = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > this.ddlSites = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > this.ddlClasses = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > ddlFundingSource.ID = FundingSourceControlId;
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.ID = ProvidersControlId;
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.ID = SitesControlId;
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.ID = ClassesControlId;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > LoadProviders();
| > > | > | > | > > >
| > > | > | > | > > > // start containing table
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(WebHelper.MakeLiteral("<table
| > > cellpadding=0
| > > | > | > | > > > cellspacing=0><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > > // this.Controls.Add(rysReportingYearSelector);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > > // this.Controls.Add(fasFiscalAgent);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>Funding
| > > | > | > | > > > Source</td><td>"));
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlFundingSource);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > |
| > > | > | >
| > > | > |
| > > | >
| > > |
| > >
| >
|
this.Controls.Add(WebHelper.MakeLiteral( said:
| > > | > | > | > > > );
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlProviders);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | >
| > > | > | >
| > > | >
| > >
|
this.Controls.Add(WebHelper.MakeLiteral( said:
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlSites);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > |
| > > | > | >
| > > | > |
| > > | >
| > > |
| > >
| >
|
this.Controls.Add(WebHelper.MakeLiteral( said:
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlClasses);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > > // end containing table
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > > ddlFundingSource.SelectedIndexChanged += new
| > > | > | > | > > > EventHandler(ddlFundingSource_SelectedIndexChanged);
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.SelectedIndexChanged += new
| > > | > | > | > > > EventHandler(ddlProviders_SelectedIndexChanged);
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.SelectedIndexChanged += new
| > > | > | > | > > > EventHandler(ddlSites_SelectedIndexChanged);
| > > | > | > | > > >
| > > | > | > | > > > ddlFundingSource.AutoPostBack =
| ddlProviders.AutoPostBack
| > =
| > > | > | > | > > > ddlSites.AutoPostBack = true;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadFundingSource()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > int fiscalAgentId =
| > > | > 1;//this.fasFiscalAgent.SelectedFiscalAgentId;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > if(fiscalAgentId != int.MinValue)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > FundingSourceVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataSource =
| > > | > | > | > FiscalAgentFunding.Find(fiscalAgentId);
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataTextField =
| "ShortDescription";
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataValueField = "CodeId";
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > if(this.ddlFundingSource.Items.Count > 1)
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.Items.Insert(0, new
| > > | ListItem(string.Empty,
| > > | > | > | > > > string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > FundingSourceVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadProviders()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > int fiscalAgentId =
| > > 1;//fasFiscalAgent.SelectedFiscalAgentId;
| > > | > | > | > > >
| > > | > | > | > > > if(fiscalAgentId != int.MinValue)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("help","1"));
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("me","2"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > ProviderVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > // are these dates correct???????????????????????????
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataSource =
| > > | > FiscalAgentProvider.Find(fiscalAgentId,
| > > | > | > new
| > > | > | > | > > > DateTime(2005,7,1), new
| > > | > | > | > > >
| > > | > | > |
| > > | >
| > DateTime(2006,6,30));//rysReportingYearSelector.ReportingYearStartDate,
| > > | > | > | > > > rysReportingYearSelector.ReportingYearEndDate); //
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataTextField = "ProviderName";
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataValueField = "ProviderId";
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.Items.Insert(0, new
ListItem(string.Empty,
| > > | > | > | string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > this.ddlProviders.Items.Clear();
| > > | > | > | > > >
| > > | > | > | > > > ProviderVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > // LoadSites();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadSites()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ddlProviders.SelectedValue != string.Empty)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > // Load the Site search parameters.
| > > | > | > | > > >
| > > | > | > | > > > SiteFindArgs siteFindArgs=new SiteFindArgs();
| > > | > | > | > > >
| > > | > | > | > > > siteFindArgs.FiscalAgentId=1;
| > > | > | > | > > >
//Convert.ToInt32(fasFiscalAgent.SelectedFiscalAgentId);
| > > | > | > | > > >
| > > | > | > | > > > SiteVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataSource =
Business.Site.Find(siteFindArgs);
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataTextField = "Name";
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataValueField = "SiteId";
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.Items.Insert(0, new ListItem(string.Empty,
| > > | > | string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.Items.Clear();
| > > | > | > | > > >
| > > | > | > | > > > SiteVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > // LoadClasses();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadClasses()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ddlSites.SelectedValue != string.Empty)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > AdultEdClassFindArgs adultEdClassFindArgs = new
| > > | > | > | AdultEdClassFindArgs();
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.FiscalAgentId =
| > > | > | > | > > > Convert.ToInt32(fasFiscalAgent.SelectedFiscalAgentId);
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.ReportingYearStartDate =
| > > | > | > | > > > rysReportingYearSelector.ReportingYearStartDate;
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.ReportingYearEndDate =
| > > | > | > | > > > rysReportingYearSelector.ReportingYearEndDate;
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.ProviderName =
| > > | > ddlProviders.SelectedValue;
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.SiteName =
| ddlSites.SelectedValue;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > ClassVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataSource =
| > > | AdultEdClass.Find(adultEdClassFindArgs);
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataTextField = "Name";
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataValueField = "ClassId";
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.Items.Insert(0, new ListItem(string.Empty,
| > > | > | > string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.Items.Clear();
| > > | > | > | > > >
| > > | > | > | > > > ClassVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > #region Public Properties
| > > | > | > | > > >
| > > | > | > | > > > #region IReportParameterControl Members
| > > | > | > | > > >
| > > | > | > | > > > public object ParameterValue
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get{ return null; }
| > > | > | > | > > >
| > > | > | > | > > > set{ /*do nothing */ }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > public ParameterCollection Parameters
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get{ return parameters; }
| > > | > | > | > > >
| > > | > | > | > > > set{ parameters = value;}
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > protected bool FundingSourceVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["FundingSourceVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["FundingSourceVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["FundingSourceVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > protected bool ProviderVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["ProviderVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["ProviderVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["ProviderVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > protected bool SiteVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["SiteVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["SiteVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["SiteVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > protected bool ClassVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["ClassVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["ClassVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["ClassVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > #region Private Member Variables
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlFundingSource;
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlProviders;
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlSites;
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlClasses;
| > > | > | > | > > >
| > > | > | > | > > > private ParameterCollection parameters = new
| > > | > | ParameterCollection();
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > #region Private Constants
| > > | > | > | > > >
| > > | > | > | > > > private const string ReportingYearSelectorControlId =
| > > | > | > | > > > "rysReportingYearSelector";
| > > | > | > | > > >
| > > | > | > | > > > private const string FiscalAgentSelectorControlId =
| > > | > | > | > > > "fasFiscalAgentSelector";
| > > | > | > | > > >
| > > | > | > | > > > private const string FundingSourceControlId =
| > > | > "ddlFundingSource";
| > > | > | > | > > >
| > > | > | > | > > > private const string FundingSourceLabelControlId =
| > > | > | > "lblFundingSource";
| > > | > | > | > > >
| > > | > | > | > > > private const string ProvidersControlId =
| "ddlProviders";
| > > | > | > | > > >
| > > | > | > | > > > private const string ProvidersLabelControlId =
| > > "lblProviders";
| > > | > | > | > > >
| > > | > | > | > > > private const string SitesControlId = "ddlSites";
| > > | > | > | > > >
| > > | > | > | > > > private const string SitesLabelControlId = "lblSites";
| > > | > | > | > > >
| > > | > | > | > > > private const string ClassesControlId = "ddlClasses";
| > > | > | > | > > >
| > > | > | > | > > > private const string ClassesLabelControlId =
| "lblClasses";
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > "Steven Cheng[MSFT]" <[email protected]>
| wrote
| > in
| > > | > | message
| > > | > | > | > > > | > > | > | > | > > > > Hi TS,
| > > | > | > | > > > >
| > > | > | > | > > > > See you again :), seems you're rushing in a asp.net
| > > project
| > > | > | these
| > > | > | > | > days?
| > > | > | > | > > > > For the question you mentioned in this post, here
are
| > some
| > > | of
| > > | > my
| > > | > | > | > > > > understanding and suggestions:
| > > | > | > | > > > >
| > > | > | > | > > > > 1. ASP.NET controls derived from Control will
| > > automatically
| > > | > | > maintain
| > > | > | > | > its
| > > | > | > | > > > > ViewStates according to the asp.net web page's
events
| > > | > sequence.
| > > | > | So
| > > | > | > | for
| > > | > | > | > > > > composite control, those nested sub Controls' status
| > > | > (properties
| > > | > | > | which
| > > | > | > | > > be
| > > | > | > | > > > > persistd in Viewsstate ) will be store and retrieve
| > > | > | automatically.
| > > | > | > | > > > >
| > > | > | > | > > > > 2. However, there're some thing we need to care when
| > > | building
| > > | > | > | > composite
| > > | > | > | > > > > control:
| > > | > | > | > > > > #remember to implement INamingContainer for controls
| > which
| > > | > will
| > > | > | > have
| > > | > | > | > > > nested
| > > | > | > | > > > > sub controls. Otherwise, even handler mapping,
| ViewState
| > > | > loading
| > > | > | > | will
| > > | > | > | > > > occur
| > > | > | > | > > > > unexpectedly.
| > > | > | > | > > > >
| > > | > | > | > > > > #Do remember to assign a explicit ID for each sub
| > > | > controls(same
| > > | > | > | reason
| > > | > | > | > > as
| > > | > | > | > > > > #1). Also, please always try best to add subcontrols
| in
| > > the
| > > | > | > | > > > > "CreateChildControls" method(just create control
| > > hierarchy)
| > > | > and
| > > | > | > put
| > > | > | > | > > > > manipulating code in postback event or PreRender
| event.
| > > | > | > | > > > >
| > > | > | > | > > > > In addition, for your detaile scenario, I've just
| built
| > a
| > > | very
| > > | > | > | simple
| > > | > | > | > > demo
| > > | > | > | > > > > control which have three dropdownlists and The
"Top"
| > one
| > > | will
| > > | > | > | display
| > > | > | > | > > > > first(other twos invisible) and according to the top
| > one's
| > > | > | > | selection,
| > > | > | > | > > the
| > > | > | > | > > > > "Mid" dropdownlist will be pouplated and the same
when
| > the
| > > | > | "mid"'s
| > > | > | > | > > > > selection changed......
| > > | > | > | > > > >
| > > | > | > | > > > > Here's the control's code for your reference:
| > > | > | > | > > > >
| > > | > | > | > > > > =========================
| > > | > | > | > > > > [DefaultProperty("Text"),
| > > | > | > | > > > > ToolboxData("<{0}:MultiListControl
| > > | > | > | > > runat=server></{0}:MultiListControl>")]
| > > | > | > | > > > > public class MultiListControl :
| > > | > | > | System.Web.UI.WebControls.WebControl,
| > > | > | > | > > > > INamingContainer
| > > | > | > | > > > > {
| > > | > | > | > > > > private string text;
| > > | > | > | > > > >
| > > | > | > | > > > > private DropDownList lstTop;
| > > | > | > | > > > > private DropDownList lstMid;
| > > | > | > | > > > > private DropDownList lstBot;
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > protected bool MidVisible
| > > | > | > | > > > > {
| > > | > | > | > > > > get{
| > > | > | > | > > > > if(ViewState["MID_VISIBLE"] == null)
| > > | > | > | > > > > {
| > > | > | > | > > > > return false;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > return (bool)ViewState["MID_VISIBLE"];
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > set{
| > > | > | > | > > > > TrackViewState();
| > > | > | > | > > > > ViewState["MID_VISIBLE"] = value;
| > > | > | > | > > > > }
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > protected bool BotVisible
| > > | > | > | > > > > {
| > > | > | > | > > > > get
| > > | > | > | > > > > {
| > > | > | > | > > > > if(ViewState["BOT_VISIBLE"] == null)
| > > | > | > | > > > > {
| > > | > | > | > > > > return false;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > return (bool)ViewState["BOT_VISIBLE"];
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > set
| > > | > | > | > > > > {
| > > | > | > | > > > > TrackViewState();
| > > | > | > | > > > > ViewState["BOT_VISIBLE"] = value;
| > > | > | > | > > > > }
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > [Bindable(true),
| > > | > | > | > > > > Category("Appearance"),
| > > | > | > | > > > > DefaultValue("")]
| > > | > | > | > > > > public string Text
| > > | > | > | > > > > {
| > > | > | > | > > > > get
| > > | > | > | > > > > {
| > > | > | > | > > > > return text;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > set
| > > | > | > | > > > > {
| > > | > | > | > > > > text = value;
| > > | > | > | > > > > }
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > protected override void CreateChildControls()
| > > | > | > | > > > > {
| > > | > | > | > > > > Controls.Clear();
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"
| > > | > | > | > > > > <table width='100%'>
| > > | > | > | > > > > <tr><td>
| > > | > | > | > > > > "));
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop = new DropDownList();
| > > | > | > | > > > > lstTop.ID = "lstTop";
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop.Items.Add("----------");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_1");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_2");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_3");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_4");
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(lstTop);
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"<br/>"
| > > | > | > | > > > > ));
| > > | > | > | > > > >
| > > | > | > | > > > > lstMid = new DropDownList();
| > > | > | > | > > > > lstMid.ID = "lstMid";
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(lstMid);
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"<br/>"
| > > | > | > | > > > > ));
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > lstBot = new DropDownList();
| > > | > | > | > > > > lstBot.ID = "lstBot";
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(lstBot);
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"
| > > | > | > | > > > > </td></tr>
| > > | > | > | > > > > </table>
| > > | > | > | > > > > "
| > > | > | > | > > > > ));
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop.SelectedIndexChanged +=new
| > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > > | > | > | > > > > lstMid.SelectedIndexChanged +=new
| > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > > | > | > | > > > > lstBot.SelectedIndexChanged +=new
| > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop.AutoPostBack = lstMid.AutoPostBack =
| > > | > lstBot.AutoPostBack
| > > | > | =
| > > | > | > | > true;
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > protected override void OnPreRender(EventArgs e)
| > > | > | > | > > > > {
| > > | > | > | > > > > base.OnPreRender (e);
| > > | > | > | > > > >
| > > | > | > | > > > > lstMid.Visible = MidVisible;
| > > | > | > | > > > > lstBot.Visible = BotVisible;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > private void lst_SelectedIndexChanged(object sender,
| > > | > | > | System.EventArgs
| > > | > | > | > e)
| > > | > | > | > > > > {
| > > | > | > | > > > >
| > > | > | > | > > > > DropDownList lst = sender as DropDownList;
| > > | > | > | > > > >
| > > | > | > | > > > > switch(lst.ID)
| > > | > | > | > > > > {
| > > | > | > | > > > > case "lstTop":
| > > | > | > | > > > >
| > > | > | > | > > > > if(lst.SelectedIndex != 0)
| > > | > | > | > > > > {
| > > | > | > | > > > > lstMid.DataSource = GetSubItems(lst.SelectedValue);
| > > | > | > | > > > > lstMid.DataTextField = "Text";
| > > | > | > | > > > > lstMid.DataValueField= "Value";
| > > | > | > | > > > > lstMid.DataBind();
| > > | > | > | > > > >
| > > | > | > | > > > > MidVisible = true;
| > > | > | > | > > > > }
| > > | > | > | > > > > else
| > > | > | > | > > > > {
| > > | > | > | > > > > MidVisible = BotVisible = false;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > break;
| > > | > | > | > > > > case "lstMid":
| > > | > | > | > > > >
| > > | > | > | > > > > lstBot.DataSource = GetSubItems(lst.SelectedValue);
| > > | > | > | > > > > lstBot.DataTextField = "Text";
| > > | > | > | > > > > lstBot.DataValueField= "Value";
| > > | > | > | > > > > lstBot.DataBind();
| > > | > | > | > > > >
| > > | > | > | > > > > MidVisible = BotVisible = true;
| > > | > | > | > > > >
| > > | > | > | > > > > break;
| > > | > | > | > > > > case "lstBot":
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > break;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > Page.Response.Write("<br>" + lst.ID +
| > > | > "_selectedindexchanged!" +
| > > | > | > | > > > > lst.EnableViewState);
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > #region --Helper functions---
| > > | > | > | > > > >
| > > | > | > | > > > > public ListItemCollection GetSubItems(string parent)
| > > | > | > | > > > > {
| > > | > | > | > > > > ListItemCollection items = new ListItemCollection();
| > > | > | > | > > > > int count = parent.Length;
| > > | > | > | > > > >
| > > | > | > | > > > > for(int i=0;i<count;++i)
| > > | > | > | > > > > {
| > > | > | > | > > > > items.Add(parent + "_Item_" + i);
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > return items;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > #endregion
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > ========================
| > > | > | > | > > > > Hope helps. Thanks,
| > > | > | > | > > > >
| > > | > | > | > > > > Steven Cheng
| > > | > | > | > > > > Microsoft Online Support
| > > | > | > | > > > >
| > > | > | > | > > > > Get Secure! www.microsoft.com/security
| > > | > | > | > > > > (This posting is provided "AS IS", with no
warranties,
| > and
| > > | > | confers
| > > | > | > | no
| > > | > | > | > > > > rights.)
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > --------------------
| > > | > | > | > > > > | From: "TS" <[email protected]>
| > > | > | > | > > > > | References:
<[email protected]>
| > > | > | > | > > > > | Subject: Re: explanation of when need to
repopulate
| > > | control
| > > | > | > | > > > > | Date: Tue, 2 Aug 2005 18:32:23 -0500
| > > | > | > | > > > > | Lines: 39
| > > | > | > | > > > > | X-Priority: 3
| > > | > | > | > > > > | X-MSMail-Priority: Normal
| > > | > | > | > > > > | X-Newsreader: Microsoft Outlook Express
| 6.00.2800.1158
| > > | > | > | > > > > | X-MimeOLE: Produced By Microsoft MimeOLE
| > V6.00.2800.1165
| > > | > | > | > > > > | Message-ID:
<[email protected]>
| > > | > | > | > > > > | Newsgroups:
| > > | > | > | > > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > |
| > > | > | >
| > > | > |
| > > | >
| > > |
| > >
| >
|
microsoft.public.dotnet.framework.aspnet.webcontrols,microsoft.public.dotnet
| > > | > | > | > > > > framework.aspnet.buildingcontrols
| > > | > | > | > > > > | NNTP-Posting-Host: 103nat100.tea.state.tx.us
| > > | 198.214.103.100
| > > | > | > | > > > > | Path:
| > > | > | > | >
| > TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| > > | > | > | > > > > | Xref: TK2MSFTNGXA01.phx.gbl
| > > | > | > | > > > >
| > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols:3979
| > > | > | > | > > > >
| > microsoft.public.dotnet.framework.aspnet.webcontrols:10243
| > > | > | > | > > > > | X-Tomcat-NG:
| > > | > | > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | > | > > > > |
| > > | > | > | > > > > | sorry, heres the scenario i'm trying to
accomplish:
| > > | > | > | > > > > | I have a composite control that contains 4 drop
down
| > > | lists.
| > > | > | When
| > > | > | > | the
| > > | > | > | > > > page
| > > | > | > | > > > > | loads initially, i want the first drop down filled
| and
| > > the
| > > | > | rest
| > > | > | > | > > > invisible.
| > > | > | > | > > > > | When you select an item in this ddl, it posts back
| to
| > > the
| > > | > | server
| > > | > | > | and
| > > | > | > | > > > based
| > > | > | > | > > > > | on its value, it populates its immediate child's
| drop
| > > down
| > > | > | list.
| > > | > | > | So
| > > | > | > | > > now
| > > | > | > | > > > > the
| > > | > | > | > > > > | top ddl has a value selected and the 2nd one just
| has
| > > its
| > > | > | items
| > > | > | > | > > > populated.
| > > | > | > | > > > > | Then when the 2nd drop down list gets selected, it
| > posts
| > > | to
| > > | > | the
| > > | > | > | > server
| > > | > | > | > > > and
| > > | > | > | > > > > | its value is used to populate(filter) the items
for
| > the
| > > | 3rd
| > > | > | drop
| > > | > | > | > down
| > > | > | > | > > > > | list...and so on for each drop down list.
| > > | > | > | > > > > |
| > > | > | > | > > > > | Please tell me what i need to do to handle post
back
| > > data
| > > | > and
| > > | > | > | > maintain
| > > | > | > | > > > > state
| > > | > | > | > > > > | from one postback to another while keeping the
drop
| > > | > downlists
| > > | > | > | filled
| > > | > | > | > > and
| > > | > | > | > > > > | their values persisted.
| > > | > | > | > > > > |
| > > | > | > | > > > > | thank you again!
| > > | > | > | > > > > |
| > > | > | > | > > > > |
| > > | > | > | > > > > | | > > | > | > | > > > > | > I have a quesiton:
| > > | > | > | > > > > | > if i have a composite control and on its intial
| page
| > > | > | loading,
| > > | > | > i
| > > | > | > | > fill
| > > | > | > | > > > my
| > > | > | > | > > > > | (sub
| > > | > | > | > > > > | > control) drop down list's items collection from
| the
| > > | > database
| > > | > | > and
| > > | > | > | > > > return.
| > > | > | > | > > > > | > When the user hits a button to cause postback,
the
| > > | control
| > > | > | is
| > > | > | > | > going
| > > | > | > | > > to
| > > | > | > | > > > > get
| > > | > | > | > > > > | > initialized, then does its items collection
that i
| > > | filled
| > > | > on
| > > | > | > the
| > > | > | > | > > > initial
| > > | > | > | > > > > | > page request get repopulated from viewstate? And
| on
| > > top
| > > | of
| > > | > | > that,
| > > | > | > | > if
| > > | > | > | > > > so,
| > > | > | > | > > > > | does
| > > | > | > | > > > > | > the list item that person selected in the drop
| down
| > > list
| > > | > | again
| > > | > | > | set
| > > | > | > | > > > > itself
| > > | > | > | > > > > | as
| > > | > | > | > > > > | > the selected item in the list?
| > > | > | > | > > > > | >
| > > | > | > | > > > > | > OR do i have to re-load the items on every page
| > > request
| > > | > and
| > > | > | > then
| > > | > | > | > > > > populate
| > > | > | > | > > > > | > its value some other way???
| > > | > | > | > > > > | >
| > > | > | > | > > > > | > thanks a bunch
| > > | > | > | > > > > | >
| > > | > | > | > > > > | >
| > > | > | > | > > > > |
| > > | > | > | > > > > |
| > > | > | > | > > > > |
| > > | > | > | > > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > | >
| > > | > | > |
| > > | > | > |
| > > | > | > |
| > > | > | >
| > > | > |
| > > | > |
| > > | > |
| > > | >
| > > |
| > > |
| > > |
| > >
| >
| >
|
|
|
 
T

TS

Steven I think i know what is happening:
I recently decided to use buttons instead of using autopostback, and noticed
that what is happening is that when you click the 2nd list and it
autopostbacks, after the CreateChildControls method, the next step is to
start calling event handlers, and when it calls the 1st list's event
handler, at that point, the 2nd list should have been reinitialized and
repopulated with state and it isn't. So I think the reason why the 1st
list's event handler is getting called instead of the 2nd list's event
handler, is because the 2nd list is empty and doesn't have its state, so the
only one that does is the 1st list (which is populated every time in
CreateChildControls).

So there is something going on with my control not having its state set up
when it should. I don't know the reason, but i'm on the right track because
i have tested it while using autopostback, and when using a separate button
to post back and both times the 2nd list is empty without renewed state.

I'm worried that this may not even be possible because the container page
doesn't fill the custom datalist with the controls until the itemDataBound
event which is after initialization, and hence my control's intialization.
I"m just wondering if it is possible.

Hope this helps figure out the control execution lifecycle. Thanks a bunch

Steven Cheng said:
Hi TS,

You can mail me through the address by removing the "online" in the address
of my signature.

Thanks,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)
--------------------
| From: "TS" <[email protected]>
| References: <[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<unRs#[email protected]>
<[email protected]>
<#[email protected]>
<[email protected]>
<#[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
| Subject: Re: explanation of when need to repopulate control
| Date: Tue, 16 Aug 2005 15:44:51 -0500
| Lines: 1635
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <#[email protected]>
| Newsgroups: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| NNTP-Posting-Host: 101nat080.tea.state.tx.us 198.214.101.80
| Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| Xref: TK2MSFTNGXA01.phx.gbl
microsoft.public.dotnet.framework.aspnet.buildingcontrols:4058
| X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.buildingcontrols
|
| So what is happening is the same thing that was happening, the top most
| parent's event handler is called correctly, but its child's event is
| envoking the parent's event handler (the same one).
|
| | > Hey Steven, I have a problem while working with the same DataList
control.
| > That one problem that caused the wrong event handler to get called is
| > happening now. I am working on a different project using the same
control
| > that i got finished on the other project and trying to implement on this
| new
| > project, and it is set up almost the same. The only difference is that
on
| > this new one, i have added a postback step before the custom datalist
gets
| > loaded.
| >
| > Any ideas as why the wrong event handler is getting called?
| >
| > thanks
| >
| > | > > You're welcome TS.
| > >
| > > Glad that you've overcome the problem.
| > >
| > > Regards,
| > >
| > > Steven Cheng
| > > Microsoft Online Support
| > >
| > > Get Secure! www.microsoft.com/security
| > > (This posting is provided "AS IS", with no warranties, and confers no
| > > rights.)
| > > --------------------
| > > | From: "TS" <[email protected]>
| > > | References: <[email protected]>
| > > <[email protected]>
| > > <[email protected]>
| > > <[email protected]>
| > > <unRs#[email protected]>
| > > <[email protected]>
| > > <#[email protected]>
| > > <[email protected]>
| > > <#[email protected]>
| > > <[email protected]>
| > > | Subject: Re: explanation of when need to repopulate control
| > > | Date: Mon, 8 Aug 2005 12:50:32 -0500
| > > | Lines: 1445
| > > | X-Priority: 3
| > > | X-MSMail-Priority: Normal
| > > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > > | Message-ID: <[email protected]>
| > > | Newsgroups:
microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > > | Path:
TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| > > | Xref: TK2MSFTNGXA01.phx.gbl
| > > microsoft.public.dotnet.framework.aspnet.buildingcontrols:4014
| > > | X-Tomcat-NG:
microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > |
| > > | Well you were right that it had something to do with the custom
| control.
| > > The
| > > | datalist was trying to load itself during page load. i put the code
in
| > > Init,
| > > | and it worked.
| > > |
| > > | thanks steven
| > > |
| > > | | > > | > Thanks for your followup TS.
| > > | >
| > > | > So can I say that currently your custom webcontrol(not template
list
| > > | > control) can correctly be added both statically and dynamically in
| the
| > > | > normal DataList or Repeater controls (asp.net buildin ) , but
have
| > some
| > > | > problem for postback events when added in your custom list
control?
| > > | >
| > > | > If so, we should keep focus on the custom datalist control. Has it
| any
| > > | > problems when we nest some asp.net buildin controls in it? Would
you
| > try
| > > | > making a simplified version of your custom datalist control so
that
| we
| > > can
| > > | > have a view to see whether there is anything wrong in it. Also,
| it'll
| > be
| > > | > helpful you also provide the complete code that you dynamically
add
| > > | control
| > > | > into the datalist (through reflection).
| > > | >
| > > | > Thanks,
| > > | >
| > > | > Steven Cheng
| > > | > Microsoft Online Support
| > > | >
| > > | > Get Secure! www.microsoft.com/security
| > > | > (This posting is provided "AS IS", with no warranties, and confers
| no
| > > | > rights.)
| > > | >
| > > | > --------------------
| > > | > | From: "TS" <[email protected]>
| > > | > | References: <[email protected]>
| > > | > <[email protected]>
| > > | > <[email protected]>
| > > | > <[email protected]>
| > > | > <unRs#[email protected]>
| > > | > <[email protected]>
| > > | > <#[email protected]>
| > > | > <[email protected]>
| > > | > | Subject: Re: explanation of when need to repopulate control
| > > | > | Date: Fri, 5 Aug 2005 17:19:23 -0500
| > > | > | Lines: 1298
| > > | > | X-Priority: 3
| > > | > | X-MSMail-Priority: Normal
| > > | > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > > | > | Message-ID: <#[email protected]>
| > > | > | Newsgroups:
| > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > > | > | Path:
| > TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP15.phx.gbl
| > > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols:4003
| > > | > | X-Tomcat-NG:
| > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > |
| > > | > | I have a new problem now. I have figured out that the cause is
the
| > > same
| > > | > | reason. If its in the custom DataList, it doesn't work, else it
| does
| > > | work.
| > > | > |
| > > | > | The scenario:
| > > | > | After the initial page load, you enter data into controls and
hit
| > > submit
| > > | > | button, the process is as follows:
| > > | > | Page_Load
| > > | > | DataList's OnLoad
| > > | > | Composite Control's OnLoad
| > > | > | Submit button's OnClick - At this point, the controls in the
| > composite
| > > | > | control have no listitems and no selectedValue properties.
| > > | > |
| > > | > | I have statically added the composite control onto the same page
| as
| > > the
| > > | > | dynamic one, so here is the process in this scenario:
| > > | > | Page_Load
| > > | > | Composite Control's OnLoad (The one whose parent is Page)
| > > | > | DataList's OnLoad
| > > | > | Composite Control's OnLoad (The one whose parent is the Custom
| > > DataList)
| > > | > | Submit button's OnClick - At this point, the controls in the
| > > statically
| > > | > | declared composite control have listitems and have values for
| > > | > selectedValue
| > > | > | properties.
| > > | > |
| > > | > | So the same control at the same time - the one outside the
custom
| > > | Datalist
| > > | > | has its controls' state set up correctly, the ones inside does
| not.
| > > | > |
| > > | > | So the same reason is at play here. Maybe since i am dynamically
| > > | creating
| > > | > | the class using reflection (Assembly.CreateInstance()) that has
| > > | something
| > > | > to
| > > | > | do with it?
| > > | > |
| > > | > | Please help mr. Cheng.
| > > | > |
| > > | > | Thank you very much!
| > > | > |
| > > | > | TS
| > > | > |
| > > | > |
| > > | > |
| message
| > > | > | | > > | > | > Hi TS,
| > > | > | >
| > > | > | > First, I'm glad that you've got your composite control work,
all
| > the
| > > | > | > dropdownlist's postback events can fire correctly,yes?
| > > | > | >
| > > | > | > As for the new problem you encountered when adding your
| composite
| > > | > control
| > > | > | > into DataList's item, is the DataList the asp.net's buildin
| > DataList
| > > | > | > control? And since you mentioned that you dynamically add
your
| > > | control
| > > | > | > into it, how do you dynamically add your custom control? Will
| > there
| > > | > occur
| > > | > | > problem if you statically add your control into DataList?
| > > | > | >
| > > | > | > Thanks,
| > > | > | >
| > > | > | > Steven Cheng
| > > | > | > Microsoft Online Support
| > > | > | >
| > > | > | > Get Secure! www.microsoft.com/security
| > > | > | > (This posting is provided "AS IS", with no warranties, and
| confers
| > > no
| > > | > | > rights.)
| > > | > | >
| > > | > | > --------------------
| > > | > | > | From: "TS" <[email protected]>
| > > | > | > | References: <[email protected]>
| > > | > | > <[email protected]>
| > > | > | > <[email protected]>
| > > | > | > <[email protected]>
| > > | > | > <unRs#[email protected]>
| > > | > | > <[email protected]>
| > > | > | > | Subject: Re: explanation of when need to repopulate control
| > > | > | > | Date: Wed, 3 Aug 2005 19:07:16 -0500
| > > | > | > | Lines: 1153
| > > | > | > | X-Priority: 3
| > > | > | > | X-MSMail-Priority: Normal
| > > | > | > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > > | > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > > | > | > | Message-ID: <#[email protected]>
| > > | > | > | Newsgroups:
| > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > > | > | > | Path:
| > > | TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP14.phx.gbl
| > > | > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > > | > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols:3989
| > > | > | > | X-Tomcat-NG:
| > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | > |
| > > | > | > | Well Steve, I am almost done. My control works well, except
| its
| > > not
| > > | in
| > > | > | the
| > > | > | > | framework i just mentioned. Adding my control dynamically to
| the
| > > | > | > datalist's
| > > | > | > | item may be the root of the cause. i've made sure all custom
| > > | controls
| > > | > | > | implmenet INamingContainer & I think all controls have their
| > id's
| > > | set,
| > > | > | so
| > > | > | > | what else can i do?
| > > | > | > |
| > > | > | > | thanks a bunch
| > > | > | > |
| > > | > | > | | > > | > | > | > I have figured the cause of the problem, sort of. My main
| > > control
| > > | > was
| > > | > | > | being
| > > | > | > | > loaded dynamically during a custom data list control's
| > > | ItemDataBound
| > > | > | > | event,
| > > | > | > | > and then added to the e.item.controls collection. Once I
| > removed
| > > | it
| > > | > | from
| > > | > | > | > here, the correct event was called in my control. the
| problem
| > > is i
| > > | > | need
| > > | > | > to
| > > | > | > | > keep it where it is because of the way the page works.
| > > | > | > | >
| > > | > | > | > I tried to add INamingContainer to the custom Datalist,
but
| > that
| > > | > | didn't
| > > | > | > | > help. Any ideas what could make this happen?
| > > | > | > | >
| > > | > | > | > thanks so much, i know i'm being a pain, but i'm stuck!
| > > | > | > | >
| > > | > | > | > This is the custom DataLists' event:
| > > | > | > | > protected override void
| OnItemDataBound(DataListItemEventArgs
| > e)
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > base.OnItemDataBound(e);
| > > | > | > | >
| > > | > | > | > Parameter parameter = (Parameter)e.Item.DataItem;
| > > | > | > | >
| > > | > | > | > try
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > Control control;
| > > | > | > | >
| > > | > | > | > if(parameter.Type == ParameterType.Control)
| > > | > | > | >
| > > | > | > | > control = this.Page.LoadControl(parameter.ControlPath);
| > > | > | > | >
| > > | > | > | > else
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > Assembly assembly = parameter.Assembly;
| > > | > | > | >
| > > | > | > | > if(assembly == null)
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > // The control didn't declare its own assembly, so use the
| > > | report's
| > > | > | > | > ControlsAssembly
| > > | > | > | >
| > > | > | > | > assembly = this.ControlsAssembly;
| > > | > | > | >
| > > | > | > | > // Ther report's ControlsAssembly is null, so use current
| > page's
| > > | > | > assembly
| > > | > | > | >
| > > | > | > | > if(assembly == null)
| > > | > | > | >
| > > | > | > | > assembly = this.Page.GetType().BaseType.Assembly;
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | >
| > > | > | > | > control = (Control)
| > > | > | assembly.CreateInstance(parameter.ControlTypeName);
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > control.ID = parameter.Name;
| > > | > | > | >
| > > | > | > | > // Set up all the properties of this control from the
| > > | > | > parameter.properties
| > > | > | > | >
| > > | > | > | > foreach(DictionaryEntry de in parameter.Properties)
| > > | > | > | >
| > > | > | > | > SetProperty(de.Key.ToString(), de.Value.ToString(),
| control);
| > > | > | > | >
| > > | > | > | >
| > > | > | > | > e.Item.Controls.Add(control);
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > catch (Exception ex)
| > > | > | > | >
| > > | > | > | > {
| > > | > | > | >
| > > | > | > | > throw new ApplicationException("Unable to render criteria.
| > > Reason:
| > > | > " +
| > > | > | > | > ex.Message, ex);
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > }
| > > | > | > | >
| > > | > | > | > | > > | > | > | > > In testing, i removed the main parent dropdown and only
| left
| > > the
| > > | 2
| > > | > | > below
| > > | > | > | > it.
| > > | > | > | > > this time, the same scenario happened...when the child
| > > dropdown
| > > | > list
| > > | > | > | > > autopostsback, it's immediate parent's
| selectedindexchanged
| > > | event
| > > | > | > fires!
| > > | > | > | I
| > > | > | > | > 'm
| > > | > | > | > > starting to pull my hair out now...I"m stuck!
| > > | > | > | > >
| > > | > | > | > > please help superman
| > > | > | > | > >
| > > | > | > | > > | > > | > | > | > > > Another problem:
| > > | > | > | > > >
| > > | > | > | > > > while i'm waiting on your remark to my last post, i
| > removed
| > > | the
| > > | > | sub
| > > | > | > | > > > composite controls from my composite control so that
| there
| > > is
| > > | > only
| > > | > | > | drop
| > > | > | > | > > down
| > > | > | > | > > > lists on it. During CreateChildcontrols, i load the
main
| > > drop
| > > | > down
| > > | > | > | using
| > > | > | > | > > > databind. When the page is sent to browser for the
first
| > > time,
| > > | i
| > > | > | > have
| > > | > | > | my
| > > | > | > | > > > main drop down filled. I then select an item and its
| > > | > | > | > SelectedIndexChanged
| > > | > | > | > > > fires and populates the send drop down list. Then
when i
| > > | select
| > > | > an
| > > | > | > | item
| > > | > | > | > > from
| > > | > | > | > > > it, it posts back, and the event that gets called is
the
| > > | > | main(first)
| > > | > | > | > > > dropdown list's SelectedIndexChanged event, which then
| > > | > | re-populates
| > > | > | > | the
| > > | > | > | > > > second drop down list, then the control returns to the
| > > browser
| > > | > | (The
| > > | > | > | > > > SelectedIndexChanged event never fired for the 2nd
| > > dropdown's
| > > | > | > changed
| > > | > | > | > > > event.???
| > > | > | > | > > >
| > > | > | > | > > > thanks again
| > > | > | > | > > >
| > > | > | > | > > > using System;
| > > | > | > | > > >
| > > | > | > | > > > using System.Collections.Specialized;
| > > | > | > | > > >
| > > | > | > | > > > using System.Web.UI;
| > > | > | > | > > >
| > > | > | > | > > > using System.Web.UI.WebControls;
| > > | > | > | > > >
| > > | > | > | > > > using System.Text;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Business;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Data;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Reporting;
| > > | > | > | > > >
| > > | > | > | > > > using OperationsTeams.Reporting.WebControls;
| > > | > | > | > > >
| > > | > | > | > > > namespace OperationsTeams.Web.ReportControls
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > /// <summary>
| > > | > | > | > > >
| > > | > | > | > > > /// Summary description for FiscalAgentHierarchy.
| > > | > | > | > > >
| > > | > | > | > > > /// </summary>
| > > | > | > | > > >
| > > | > | > | > > > public class FiscalAgentHierarchy : WebControl,
| > > | > | > | IReportParameterControl,
| > > | > | > | > > > INamingContainer
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > public FiscalAgentHierarchy()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@SchoolYear"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@ReportingGroup"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@FiscalAgentID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@FundingSourceID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@ProviderID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@SiteID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters.Add(new Parameter("@ClassID"));
| > > | > | > | > > >
| > > | > | > | > > > Parameters["@SchoolYear"].Value = 2006;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > #region Events
| > > | > | > | > > >
| > > | > | > | > > > protected override void OnLoad(EventArgs e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > base.OnLoad (e);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > // The last state of controls from viewstate is now
| loaded
| > > | > (Before
| > > | > | > the
| > > | > | > | > > > client data is processed)
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > protected override void OnPreRender(EventArgs e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > base.OnPreRender (e);
| > > | > | > | > > >
| > > | > | > | > > > // The controls now have the client values from the
the
| > last
| > > | > | > postback
| > > | > | > | > > >
| > > | > | > | > > > // ddlFundingSource.Visible = FundingSourceVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlProviders.Visible = ProviderVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Visible = SiteVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlClasses.Visible = ClassVisible;
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("help","1"));
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("me","2"));
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Visible = true;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void
| > > | > rysReportingYearSelector_ReportingYearChanged(object
| > > | > | > | > sender,
| > > | > | > | > > > EventArgs e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > // this.LoadFundingSource();
| > > | > | > | > > >
| > > | > | > | > > > // this.LoadProviders();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void fasFiscalAgent_FiscalAgentChanged(object
| > > sender,
| > > | > | > | EventArgs
| > > | > | > | > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > this.LoadFundingSource();
| > > | > | > | > > >
| > > | > | > | > > > this.LoadProviders();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void
| ddlFundingSource_SelectedIndexChanged(object
| > > | > sender,
| > > | > | > | > > EventArgs
| > > | > | > | > > > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > LoadSites();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void ddlProviders_SelectedIndexChanged(object
| > > sender,
| > > | > | > | EventArgs
| > > | > | > | > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > LoadSites();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void ddlSites_SelectedIndexChanged(object
| sender,
| > > | > | EventArgs
| > > | > | > e)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > LoadClasses();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > protected override void CreateChildControls()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > this.ddlProviders = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > this.ddlSites = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > this.ddlClasses = new DropDownList();
| > > | > | > | > > >
| > > | > | > | > > > ddlFundingSource.ID = FundingSourceControlId;
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.ID = ProvidersControlId;
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.ID = SitesControlId;
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.ID = ClassesControlId;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > LoadProviders();
| > > | > | > | > > >
| > > | > | > | > > > // start containing table
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(WebHelper.MakeLiteral("<table
| > > cellpadding=0
| > > | > | > | > > > cellspacing=0><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > > // this.Controls.Add(rysReportingYearSelector);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > > // this.Controls.Add(fasFiscalAgent);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>Funding
| > > | > | > | > > > Source</td><td>"));
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlFundingSource);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > |
| > > | > | >
| > > | > |
| > > | >
| > > |
| > >
| >
|
this.Controls.Add(WebHelper.MakeLiteral( said:
| > > | > | > | > > > );
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlProviders);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | >
| > > | > | >
| > > | >
| > >
|
this.Controls.Add(WebHelper.MakeLiteral( said:
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlSites);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > |
| > > | > | >
| > > | > |
| > > | >
| > > |
| > >
| >
|
this.Controls.Add(WebHelper.MakeLiteral( said:
| > > | > | > | > > >
| > > | > | > | > > > this.Controls.Add(ddlClasses);
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > > // end containing table
| > > | > | > | > > >
| > > | > | > | > > >
| > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > > | > | > | > > >
| > > | > | > | > > > ddlFundingSource.SelectedIndexChanged += new
| > > | > | > | > > > EventHandler(ddlFundingSource_SelectedIndexChanged);
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.SelectedIndexChanged += new
| > > | > | > | > > > EventHandler(ddlProviders_SelectedIndexChanged);
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.SelectedIndexChanged += new
| > > | > | > | > > > EventHandler(ddlSites_SelectedIndexChanged);
| > > | > | > | > > >
| > > | > | > | > > > ddlFundingSource.AutoPostBack =
| ddlProviders.AutoPostBack
| > =
| > > | > | > | > > > ddlSites.AutoPostBack = true;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadFundingSource()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > int fiscalAgentId =
| > > | > 1;//this.fasFiscalAgent.SelectedFiscalAgentId;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > if(fiscalAgentId != int.MinValue)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > FundingSourceVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataSource =
| > > | > | > | > FiscalAgentFunding.Find(fiscalAgentId);
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataTextField =
| "ShortDescription";
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataValueField = "CodeId";
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > if(this.ddlFundingSource.Items.Count > 1)
| > > | > | > | > > >
| > > | > | > | > > > this.ddlFundingSource.Items.Insert(0, new
| > > | ListItem(string.Empty,
| > > | > | > | > > > string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > FundingSourceVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadProviders()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > int fiscalAgentId =
| > > 1;//fasFiscalAgent.SelectedFiscalAgentId;
| > > | > | > | > > >
| > > | > | > | > > > if(fiscalAgentId != int.MinValue)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("help","1"));
| > > | > | > | > > >
| > > | > | > | > > > // ddlSites.Items.Add(new ListItem("me","2"));
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > ProviderVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > // are these dates correct???????????????????????????
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataSource =
| > > | > FiscalAgentProvider.Find(fiscalAgentId,
| > > | > | > new
| > > | > | > | > > > DateTime(2005,7,1), new
| > > | > | > | > > >
| > > | > | > |
| > > | >
| > DateTime(2006,6,30));//rysReportingYearSelector.ReportingYearStartDate,
| > > | > | > | > > > rysReportingYearSelector.ReportingYearEndDate); //
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataTextField = "ProviderName";
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataValueField = "ProviderId";
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > ddlProviders.Items.Insert(0, new
ListItem(string.Empty,
| > > | > | > | string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > this.ddlProviders.Items.Clear();
| > > | > | > | > > >
| > > | > | > | > > > ProviderVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > // LoadSites();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadSites()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ddlProviders.SelectedValue != string.Empty)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > // Load the Site search parameters.
| > > | > | > | > > >
| > > | > | > | > > > SiteFindArgs siteFindArgs=new SiteFindArgs();
| > > | > | > | > > >
| > > | > | > | > > > siteFindArgs.FiscalAgentId=1;
| > > | > | > | > > >
//Convert.ToInt32(fasFiscalAgent.SelectedFiscalAgentId);
| > > | > | > | > > >
| > > | > | > | > > > SiteVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataSource =
Business.Site.Find(siteFindArgs);
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataTextField = "Name";
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataValueField = "SiteId";
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.Items.Insert(0, new ListItem(string.Empty,
| > > | > | string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > ddlSites.Items.Clear();
| > > | > | > | > > >
| > > | > | > | > > > SiteVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > // LoadClasses();
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > private void LoadClasses()
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ddlSites.SelectedValue != string.Empty)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > AdultEdClassFindArgs adultEdClassFindArgs = new
| > > | > | > | AdultEdClassFindArgs();
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.FiscalAgentId =
| > > | > | > | > > > Convert.ToInt32(fasFiscalAgent.SelectedFiscalAgentId);
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.ReportingYearStartDate =
| > > | > | > | > > > rysReportingYearSelector.ReportingYearStartDate;
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.ReportingYearEndDate =
| > > | > | > | > > > rysReportingYearSelector.ReportingYearEndDate;
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.ProviderName =
| > > | > ddlProviders.SelectedValue;
| > > | > | > | > > >
| > > | > | > | > > > // adultEdClassFindArgs.SiteName =
| ddlSites.SelectedValue;
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > ClassVisible = true;
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataSource =
| > > | AdultEdClass.Find(adultEdClassFindArgs);
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataTextField = "Name";
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataValueField = "ClassId";
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.DataBind();
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.Items.Insert(0, new ListItem(string.Empty,
| > > | > | > string.Empty));
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > else
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > ddlClasses.Items.Clear();
| > > | > | > | > > >
| > > | > | > | > > > ClassVisible = false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > #region Public Properties
| > > | > | > | > > >
| > > | > | > | > > > #region IReportParameterControl Members
| > > | > | > | > > >
| > > | > | > | > > > public object ParameterValue
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get{ return null; }
| > > | > | > | > > >
| > > | > | > | > > > set{ /*do nothing */ }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > public ParameterCollection Parameters
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get{ return parameters; }
| > > | > | > | > > >
| > > | > | > | > > > set{ parameters = value;}
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > protected bool FundingSourceVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["FundingSourceVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["FundingSourceVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["FundingSourceVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > protected bool ProviderVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["ProviderVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["ProviderVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["ProviderVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > protected bool SiteVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["SiteVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["SiteVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["SiteVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > protected bool ClassVisible
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > get
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > if(ViewState["ClassVisible"] == null)
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > return false;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > return (bool)ViewState["ClassVisible"];
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > set
| > > | > | > | > > >
| > > | > | > | > > > {
| > > | > | > | > > >
| > > | > | > | > > > TrackViewState();
| > > | > | > | > > >
| > > | > | > | > > > ViewState["ClassVisible"] = value;
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > #region Private Member Variables
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlFundingSource;
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlProviders;
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlSites;
| > > | > | > | > > >
| > > | > | > | > > > private DropDownList ddlClasses;
| > > | > | > | > > >
| > > | > | > | > > > private ParameterCollection parameters = new
| > > | > | ParameterCollection();
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > #region Private Constants
| > > | > | > | > > >
| > > | > | > | > > > private const string ReportingYearSelectorControlId =
| > > | > | > | > > > "rysReportingYearSelector";
| > > | > | > | > > >
| > > | > | > | > > > private const string FiscalAgentSelectorControlId =
| > > | > | > | > > > "fasFiscalAgentSelector";
| > > | > | > | > > >
| > > | > | > | > > > private const string FundingSourceControlId =
| > > | > "ddlFundingSource";
| > > | > | > | > > >
| > > | > | > | > > > private const string FundingSourceLabelControlId =
| > > | > | > "lblFundingSource";
| > > | > | > | > > >
| > > | > | > | > > > private const string ProvidersControlId =
| "ddlProviders";
| > > | > | > | > > >
| > > | > | > | > > > private const string ProvidersLabelControlId =
| > > "lblProviders";
| > > | > | > | > > >
| > > | > | > | > > > private const string SitesControlId = "ddlSites";
| > > | > | > | > > >
| > > | > | > | > > > private const string SitesLabelControlId = "lblSites";
| > > | > | > | > > >
| > > | > | > | > > > private const string ClassesControlId = "ddlClasses";
| > > | > | > | > > >
| > > | > | > | > > > private const string ClassesLabelControlId =
| "lblClasses";
| > > | > | > | > > >
| > > | > | > | > > > #endregion
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > > }
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > > > "Steven Cheng[MSFT]" <[email protected]>
| wrote
| > in
| > > | > | message
| > > | > | > | > > > | > > | > | > | > > > > Hi TS,
| > > | > | > | > > > >
| > > | > | > | > > > > See you again :), seems you're rushing in a asp.net
| > > project
| > > | > | these
| > > | > | > | > days?
| > > | > | > | > > > > For the question you mentioned in this post, here
are
| > some
| > > | of
| > > | > my
| > > | > | > | > > > > understanding and suggestions:
| > > | > | > | > > > >
| > > | > | > | > > > > 1. ASP.NET controls derived from Control will
| > > automatically
| > > | > | > maintain
| > > | > | > | > its
| > > | > | > | > > > > ViewStates according to the asp.net web page's
events
| > > | > sequence.
| > > | > | So
| > > | > | > | for
| > > | > | > | > > > > composite control, those nested sub Controls' status
| > > | > (properties
| > > | > | > | which
| > > | > | > | > > be
| > > | > | > | > > > > persistd in Viewsstate ) will be store and retrieve
| > > | > | automatically.
| > > | > | > | > > > >
| > > | > | > | > > > > 2. However, there're some thing we need to care when
| > > | building
| > > | > | > | > composite
| > > | > | > | > > > > control:
| > > | > | > | > > > > #remember to implement INamingContainer for controls
| > which
| > > | > will
| > > | > | > have
| > > | > | > | > > > nested
| > > | > | > | > > > > sub controls. Otherwise, even handler mapping,
| ViewState
| > > | > loading
| > > | > | > | will
| > > | > | > | > > > occur
| > > | > | > | > > > > unexpectedly.
| > > | > | > | > > > >
| > > | > | > | > > > > #Do remember to assign a explicit ID for each sub
| > > | > controls(same
| > > | > | > | reason
| > > | > | > | > > as
| > > | > | > | > > > > #1). Also, please always try best to add subcontrols
| in
| > > the
| > > | > | > | > > > > "CreateChildControls" method(just create control
| > > hierarchy)
| > > | > and
| > > | > | > put
| > > | > | > | > > > > manipulating code in postback event or PreRender
| event.
| > > | > | > | > > > >
| > > | > | > | > > > > In addition, for your detaile scenario, I've just
| built
| > a
| > > | very
| > > | > | > | simple
| > > | > | > | > > demo
| > > | > | > | > > > > control which have three dropdownlists and The
"Top"
| > one
| > > | will
| > > | > | > | display
| > > | > | > | > > > > first(other twos invisible) and according to the top
| > one's
| > > | > | > | selection,
| > > | > | > | > > the
| > > | > | > | > > > > "Mid" dropdownlist will be pouplated and the same
when
| > the
| > > | > | "mid"'s
| > > | > | > | > > > > selection changed......
| > > | > | > | > > > >
| > > | > | > | > > > > Here's the control's code for your reference:
| > > | > | > | > > > >
| > > | > | > | > > > > =========================
| > > | > | > | > > > > [DefaultProperty("Text"),
| > > | > | > | > > > > ToolboxData("<{0}:MultiListControl
| > > | > | > | > > runat=server></{0}:MultiListControl>")]
| > > | > | > | > > > > public class MultiListControl :
| > > | > | > | System.Web.UI.WebControls.WebControl,
| > > | > | > | > > > > INamingContainer
| > > | > | > | > > > > {
| > > | > | > | > > > > private string text;
| > > | > | > | > > > >
| > > | > | > | > > > > private DropDownList lstTop;
| > > | > | > | > > > > private DropDownList lstMid;
| > > | > | > | > > > > private DropDownList lstBot;
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > protected bool MidVisible
| > > | > | > | > > > > {
| > > | > | > | > > > > get{
| > > | > | > | > > > > if(ViewState["MID_VISIBLE"] == null)
| > > | > | > | > > > > {
| > > | > | > | > > > > return false;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > return (bool)ViewState["MID_VISIBLE"];
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > set{
| > > | > | > | > > > > TrackViewState();
| > > | > | > | > > > > ViewState["MID_VISIBLE"] = value;
| > > | > | > | > > > > }
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > protected bool BotVisible
| > > | > | > | > > > > {
| > > | > | > | > > > > get
| > > | > | > | > > > > {
| > > | > | > | > > > > if(ViewState["BOT_VISIBLE"] == null)
| > > | > | > | > > > > {
| > > | > | > | > > > > return false;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > return (bool)ViewState["BOT_VISIBLE"];
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > set
| > > | > | > | > > > > {
| > > | > | > | > > > > TrackViewState();
| > > | > | > | > > > > ViewState["BOT_VISIBLE"] = value;
| > > | > | > | > > > > }
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > [Bindable(true),
| > > | > | > | > > > > Category("Appearance"),
| > > | > | > | > > > > DefaultValue("")]
| > > | > | > | > > > > public string Text
| > > | > | > | > > > > {
| > > | > | > | > > > > get
| > > | > | > | > > > > {
| > > | > | > | > > > > return text;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > set
| > > | > | > | > > > > {
| > > | > | > | > > > > text = value;
| > > | > | > | > > > > }
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > protected override void CreateChildControls()
| > > | > | > | > > > > {
| > > | > | > | > > > > Controls.Clear();
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"
| > > | > | > | > > > > <table width='100%'>
| > > | > | > | > > > > <tr><td>
| > > | > | > | > > > > "));
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop = new DropDownList();
| > > | > | > | > > > > lstTop.ID = "lstTop";
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop.Items.Add("----------");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_1");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_2");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_3");
| > > | > | > | > > > > lstTop.Items.Add("Top_Item_4");
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(lstTop);
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"<br/>"
| > > | > | > | > > > > ));
| > > | > | > | > > > >
| > > | > | > | > > > > lstMid = new DropDownList();
| > > | > | > | > > > > lstMid.ID = "lstMid";
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(lstMid);
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"<br/>"
| > > | > | > | > > > > ));
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > lstBot = new DropDownList();
| > > | > | > | > > > > lstBot.ID = "lstBot";
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(lstBot);
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > Controls.Add(
| > > | > | > | > > > > new LiteralControl(
| > > | > | > | > > > > @"
| > > | > | > | > > > > </td></tr>
| > > | > | > | > > > > </table>
| > > | > | > | > > > > "
| > > | > | > | > > > > ));
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop.SelectedIndexChanged +=new
| > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > > | > | > | > > > > lstMid.SelectedIndexChanged +=new
| > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > > | > | > | > > > > lstBot.SelectedIndexChanged +=new
| > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > > | > | > | > > > >
| > > | > | > | > > > > lstTop.AutoPostBack = lstMid.AutoPostBack =
| > > | > lstBot.AutoPostBack
| > > | > | =
| > > | > | > | > true;
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > protected override void OnPreRender(EventArgs e)
| > > | > | > | > > > > {
| > > | > | > | > > > > base.OnPreRender (e);
| > > | > | > | > > > >
| > > | > | > | > > > > lstMid.Visible = MidVisible;
| > > | > | > | > > > > lstBot.Visible = BotVisible;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > private void lst_SelectedIndexChanged(object sender,
| > > | > | > | System.EventArgs
| > > | > | > | > e)
| > > | > | > | > > > > {
| > > | > | > | > > > >
| > > | > | > | > > > > DropDownList lst = sender as DropDownList;
| > > | > | > | > > > >
| > > | > | > | > > > > switch(lst.ID)
| > > | > | > | > > > > {
| > > | > | > | > > > > case "lstTop":
| > > | > | > | > > > >
| > > | > | > | > > > > if(lst.SelectedIndex != 0)
| > > | > | > | > > > > {
| > > | > | > | > > > > lstMid.DataSource = GetSubItems(lst.SelectedValue);
| > > | > | > | > > > > lstMid.DataTextField = "Text";
| > > | > | > | > > > > lstMid.DataValueField= "Value";
| > > | > | > | > > > > lstMid.DataBind();
| > > | > | > | > > > >
| > > | > | > | > > > > MidVisible = true;
| > > | > | > | > > > > }
| > > | > | > | > > > > else
| > > | > | > | > > > > {
| > > | > | > | > > > > MidVisible = BotVisible = false;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > break;
| > > | > | > | > > > > case "lstMid":
| > > | > | > | > > > >
| > > | > | > | > > > > lstBot.DataSource = GetSubItems(lst.SelectedValue);
| > > | > | > | > > > > lstBot.DataTextField = "Text";
| > > | > | > | > > > > lstBot.DataValueField= "Value";
| > > | > | > | > > > > lstBot.DataBind();
| > > | > | > | > > > >
| > > | > | > | > > > > MidVisible = BotVisible = true;
| > > | > | > | > > > >
| > > | > | > | > > > > break;
| > > | > | > | > > > > case "lstBot":
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > break;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > Page.Response.Write("<br>" + lst.ID +
| > > | > "_selectedindexchanged!" +
| > > | > | > | > > > > lst.EnableViewState);
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > #region --Helper functions---
| > > | > | > | > > > >
| > > | > | > | > > > > public ListItemCollection GetSubItems(string parent)
| > > | > | > | > > > > {
| > > | > | > | > > > > ListItemCollection items = new ListItemCollection();
| > > | > | > | > > > > int count = parent.Length;
| > > | > | > | > > > >
| > > | > | > | > > > > for(int i=0;i<count;++i)
| > > | > | > | > > > > {
| > > | > | > | > > > > items.Add(parent + "_Item_" + i);
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > return items;
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > #endregion
| > > | > | > | > > > > }
| > > | > | > | > > > >
| > > | > | > | > > > > ========================
| > > | > | > | > > > > Hope helps. Thanks,
| > > | > | > | > > > >
| > > | > | > | > > > > Steven Cheng
| > > | > | > | > > > > Microsoft Online Support
| > > | > | > | > > > >
| > > | > | > | > > > > Get Secure! www.microsoft.com/security
| > > | > | > | > > > > (This posting is provided "AS IS", with no
warranties,
| > and
| > > | > | confers
| > > | > | > | no
| > > | > | > | > > > > rights.)
| > > | > | > | > > > >
| > > | > | > | > > > >
| > > | > | > | > > > > --------------------
| > > | > | > | > > > > | From: "TS" <[email protected]>
| > > | > | > | > > > > | References:
<[email protected]>
| > > | > | > | > > > > | Subject: Re: explanation of when need to
repopulate
| > > | control
| > > | > | > | > > > > | Date: Tue, 2 Aug 2005 18:32:23 -0500
| > > | > | > | > > > > | Lines: 39
| > > | > | > | > > > > | X-Priority: 3
| > > | > | > | > > > > | X-MSMail-Priority: Normal
| > > | > | > | > > > > | X-Newsreader: Microsoft Outlook Express
| 6.00.2800.1158
| > > | > | > | > > > > | X-MimeOLE: Produced By Microsoft MimeOLE
| > V6.00.2800.1165
| > > | > | > | > > > > | Message-ID:
<[email protected]>
| > > | > | > | > > > > | Newsgroups:
| > > | > | > | > > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > |
| > > | > | >
| > > | > |
| > > | >
| > > |
| > >
| >
|
microsoft.public.dotnet.framework.aspnet.webcontrols,microsoft.public.dotnet
| > > | > | > | > > > > framework.aspnet.buildingcontrols
| > > | > | > | > > > > | NNTP-Posting-Host: 103nat100.tea.state.tx.us
| > > | 198.214.103.100
| > > | > | > | > > > > | Path:
| > > | > | > | >
| > TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| > > | > | > | > > > > | Xref: TK2MSFTNGXA01.phx.gbl
| > > | > | > | > > > >
| > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols:3979
| > > | > | > | > > > >
| > microsoft.public.dotnet.framework.aspnet.webcontrols:10243
| > > | > | > | > > > > | X-Tomcat-NG:
| > > | > | > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > > | > | > | > > > > |
| > > | > | > | > > > > | sorry, heres the scenario i'm trying to
accomplish:
| > > | > | > | > > > > | I have a composite control that contains 4 drop
down
| > > | lists.
| > > | > | When
| > > | > | > | the
| > > | > | > | > > > page
| > > | > | > | > > > > | loads initially, i want the first drop down filled
| and
| > > the
| > > | > | rest
| > > | > | > | > > > invisible.
| > > | > | > | > > > > | When you select an item in this ddl, it posts back
| to
| > > the
| > > | > | server
| > > | > | > | and
| > > | > | > | > > > based
| > > | > | > | > > > > | on its value, it populates its immediate child's
| drop
| > > down
| > > | > | list.
| > > | > | > | So
| > > | > | > | > > now
| > > | > | > | > > > > the
| > > | > | > | > > > > | top ddl has a value selected and the 2nd one just
| has
| > > its
| > > | > | items
| > > | > | > | > > > populated.
| > > | > | > | > > > > | Then when the 2nd drop down list gets selected, it
| > posts
| > > | to
| > > | > | the
| > > | > | > | > server
| > > | > | > | > > > and
| > > | > | > | > > > > | its value is used to populate(filter) the items
for
| > the
| > > | 3rd
| > > | > | drop
| > > | > | > | > down
| > > | > | > | > > > > | list...and so on for each drop down list.
| > > | > | > | > > > > |
| > > | > | > | > > > > | Please tell me what i need to do to handle post
back
| > > data
| > > | > and
| > > | > | > | > maintain
| > > | > | > | > > > > state
| > > | > | > | > > > > | from one postback to another while keeping the
drop
| > > | > downlists
| > > | > | > | filled
| > > | > | > | > > and
| > > | > | > | > > > > | their values persisted.
| > > | > | > | > > > > |
| > > | > | > | > > > > | thank you again!
| > > | > | > | > > > > |
| > > | > | > | > > > > |
| > > | > | > | > > > > | | > > | > | > | > > > > | > I have a quesiton:
| > > | > | > | > > > > | > if i have a composite control and on its intial
| page
| > > | > | loading,
| > > | > | > i
| > > | > | > | > fill
| > > | > | > | > > > my
| > > | > | > | > > > > | (sub
| > > | > | > | > > > > | > control) drop down list's items collection from
| the
| > > | > database
| > > | > | > and
| > > | > | > | > > > return.
| > > | > | > | > > > > | > When the user hits a button to cause postback,
the
| > > | control
| > > | > | is
| > > | > | > | > going
| > > | > | > | > > to
| > > | > | > | > > > > get
| > > | > | > | > > > > | > initialized, then does its items collection
that i
| > > | filled
| > > | > on
| > > | > | > the
| > > | > | > | > > > initial
| > > | > | > | > > > > | > page request get repopulated from viewstate? And
| on
| > > top
| > > | of
| > > | > | > that,
| > > | > | > | > if
| > > | > | > | > > > so,
| > > | > | > | > > > > | does
| > > | > | > | > > > > | > the list item that person selected in the drop
| down
| > > list
| > > | > | again
| > > | > | > | set
| > > | > | > | > > > > itself
| > > | > | > | > > > > | as
| > > | > | > | > > > > | > the selected item in the list?
| > > | > | > | > > > > | >
| > > | > | > | > > > > | > OR do i have to re-load the items on every page
| > > request
| > > | > and
| > > | > | > then
| > > | > | > | > > > > populate
| > > | > | > | > > > > | > its value some other way???
| > > | > | > | > > > > | >
| > > | > | > | > > > > | > thanks a bunch
| > > | > | > | > > > > | >
| > > | > | > | > > > > | >
| > > | > | > | > > > > |
| > > | > | > | > > > > |
| > > | > | > | > > > > |
| > > | > | > | > > > >
| > > | > | > | > > >
| > > | > | > | > > >
| > > | > | > | > >
| > > | > | > | > >
| > > | > | > | >
| > > | > | > | >
| > > | > | > |
| > > | > | > |
| > > | > | > |
| > > | > | >
| > > | > |
| > > | > |
| > > | > |
| > > | >
| > > |
| > > |
| > > |
| > >
| >
| >
|
|
|
 
S

Steven Cheng[MSFT]

Thanks TS,

I've received both your two mails and will have a look into the code.

Thanks,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)
--------------------
| From: "TS" <[email protected]>
| References: <[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<unRs#[email protected]>
<[email protected]>
<#[email protected]>
<[email protected]>
<#[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<#[email protected]>
<HSC#[email protected]>
| Subject: Re: explanation of when need to repopulate control
| Date: Thu, 18 Aug 2005 13:12:53 -0500
| Lines: 1816
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| Message-ID: <[email protected]>
| Newsgroups: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| NNTP-Posting-Host: 101nat080.tea.state.tx.us 198.214.101.80
| Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP14.phx.gbl
| Xref: TK2MSFTNGXA01.phx.gbl
microsoft.public.dotnet.framework.aspnet.buildingcontrols:4072
| X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.buildingcontrols
|
| Steven I think i know what is happening:
| I recently decided to use buttons instead of using autopostback, and
noticed
| that what is happening is that when you click the 2nd list and it
| autopostbacks, after the CreateChildControls method, the next step is to
| start calling event handlers, and when it calls the 1st list's event
| handler, at that point, the 2nd list should have been reinitialized and
| repopulated with state and it isn't. So I think the reason why the 1st
| list's event handler is getting called instead of the 2nd list's event
| handler, is because the 2nd list is empty and doesn't have its state, so
the
| only one that does is the 1st list (which is populated every time in
| CreateChildControls).
|
| So there is something going on with my control not having its state set up
| when it should. I don't know the reason, but i'm on the right track
because
| i have tested it while using autopostback, and when using a separate
button
| to post back and both times the 2nd list is empty without renewed state.
|
| I'm worried that this may not even be possible because the container page
| doesn't fill the custom datalist with the controls until the itemDataBound
| event which is after initialization, and hence my control's intialization.
| I"m just wondering if it is possible.
|
| Hope this helps figure out the control execution lifecycle. Thanks a bunch
|
| | > Hi TS,
| >
| > You can mail me through the address by removing the "online" in the
| address
| > of my signature.
| >
| > Thanks,
| >
| > Steven Cheng
| > Microsoft Online Support
| >
| > Get Secure! www.microsoft.com/security
| > (This posting is provided "AS IS", with no warranties, and confers no
| > rights.)
| > --------------------
| > | From: "TS" <[email protected]>
| > | References: <[email protected]>
| > <[email protected]>
| > <[email protected]>
| > <[email protected]>
| > <unRs#[email protected]>
| > <[email protected]>
| > <#[email protected]>
| > <[email protected]>
| > <#[email protected]>
| > <[email protected]>
| > <[email protected]>
| > <[email protected]>
| > <[email protected]>
| > | Subject: Re: explanation of when need to repopulate control
| > | Date: Tue, 16 Aug 2005 15:44:51 -0500
| > | Lines: 1635
| > | X-Priority: 3
| > | X-MSMail-Priority: Normal
| > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > | Message-ID: <#[email protected]>
| > | Newsgroups: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | NNTP-Posting-Host: 101nat080.tea.state.tx.us 198.214.101.80
| > | Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| > | Xref: TK2MSFTNGXA01.phx.gbl
| > microsoft.public.dotnet.framework.aspnet.buildingcontrols:4058
| > | X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > |
| > | So what is happening is the same thing that was happening, the top
most
| > | parent's event handler is called correctly, but its child's event is
| > | envoking the parent's event handler (the same one).
| > |
| > | | > | > Hey Steven, I have a problem while working with the same DataList
| > control.
| > | > That one problem that caused the wrong event handler to get called
is
| > | > happening now. I am working on a different project using the same
| > control
| > | > that i got finished on the other project and trying to implement on
| this
| > | new
| > | > project, and it is set up almost the same. The only difference is
that
| > on
| > | > this new one, i have added a postback step before the custom
datalist
| > gets
| > | > loaded.
| > | >
| > | > Any ideas as why the wrong event handler is getting called?
| > | >
| > | > thanks
| > | >
| > | > | > | > > You're welcome TS.
| > | > >
| > | > > Glad that you've overcome the problem.
| > | > >
| > | > > Regards,
| > | > >
| > | > > Steven Cheng
| > | > > Microsoft Online Support
| > | > >
| > | > > Get Secure! www.microsoft.com/security
| > | > > (This posting is provided "AS IS", with no warranties, and confers
| no
| > | > > rights.)
| > | > > --------------------
| > | > > | From: "TS" <[email protected]>
| > | > > | References: <[email protected]>
| > | > > <[email protected]>
| > | > > <[email protected]>
| > | > > <[email protected]>
| > | > > <unRs#[email protected]>
| > | > > <[email protected]>
| > | > > <#[email protected]>
| > | > > <[email protected]>
| > | > > <#[email protected]>
| > | > > <[email protected]>
| > | > > | Subject: Re: explanation of when need to repopulate control
| > | > > | Date: Mon, 8 Aug 2005 12:50:32 -0500
| > | > > | Lines: 1445
| > | > > | X-Priority: 3
| > | > > | X-MSMail-Priority: Normal
| > | > > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > | > > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > | > > | Message-ID: <[email protected]>
| > | > > | Newsgroups:
| > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | > > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > | > > | Path:
| > TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| > | > > | Xref: TK2MSFTNGXA01.phx.gbl
| > | > > microsoft.public.dotnet.framework.aspnet.buildingcontrols:4014
| > | > > | X-Tomcat-NG:
| > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | > > |
| > | > > | Well you were right that it had something to do with the custom
| > | control.
| > | > > The
| > | > > | datalist was trying to load itself during page load. i put the
| code
| > in
| > | > > Init,
| > | > > | and it worked.
| > | > > |
| > | > > | thanks steven
| > | > > |
| message
| > | > > | | > | > > | > Thanks for your followup TS.
| > | > > | >
| > | > > | > So can I say that currently your custom webcontrol(not
template
| > list
| > | > > | > control) can correctly be added both statically and
dynamically
| in
| > | the
| > | > > | > normal DataList or Repeater controls (asp.net buildin ) , but
| > have
| > | > some
| > | > > | > problem for postback events when added in your custom list
| > control?
| > | > > | >
| > | > > | > If so, we should keep focus on the custom datalist control.
Has
| it
| > | any
| > | > > | > problems when we nest some asp.net buildin controls in it?
Would
| > you
| > | > try
| > | > > | > making a simplified version of your custom datalist control so
| > that
| > | we
| > | > > can
| > | > > | > have a view to see whether there is anything wrong in it.
Also,
| > | it'll
| > | > be
| > | > > | > helpful you also provide the complete code that you
dynamically
| > add
| > | > > | control
| > | > > | > into the datalist (through reflection).
| > | > > | >
| > | > > | > Thanks,
| > | > > | >
| > | > > | > Steven Cheng
| > | > > | > Microsoft Online Support
| > | > > | >
| > | > > | > Get Secure! www.microsoft.com/security
| > | > > | > (This posting is provided "AS IS", with no warranties, and
| confers
| > | no
| > | > > | > rights.)
| > | > > | >
| > | > > | > --------------------
| > | > > | > | From: "TS" <[email protected]>
| > | > > | > | References: <[email protected]>
| > | > > | > <[email protected]>
| > | > > | > <[email protected]>
| > | > > | > <[email protected]>
| > | > > | > <unRs#[email protected]>
| > | > > | > <[email protected]>
| > | > > | > <#[email protected]>
| > | > > | > <[email protected]>
| > | > > | > | Subject: Re: explanation of when need to repopulate control
| > | > > | > | Date: Fri, 5 Aug 2005 17:19:23 -0500
| > | > > | > | Lines: 1298
| > | > > | > | X-Priority: 3
| > | > > | > | X-MSMail-Priority: Normal
| > | > > | > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > | > > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > | > > | > | Message-ID: <#[email protected]>
| > | > > | > | Newsgroups:
| > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | > > | > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > | > > | > | Path:
| > | > TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP15.phx.gbl
| > | > > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > | > > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols:4003
| > | > > | > | X-Tomcat-NG:
| > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | > > | > |
| > | > > | > | I have a new problem now. I have figured out that the cause
is
| > the
| > | > > same
| > | > > | > | reason. If its in the custom DataList, it doesn't work, else
| it
| > | does
| > | > > | work.
| > | > > | > |
| > | > > | > | The scenario:
| > | > > | > | After the initial page load, you enter data into controls
and
| > hit
| > | > > submit
| > | > > | > | button, the process is as follows:
| > | > > | > | Page_Load
| > | > > | > | DataList's OnLoad
| > | > > | > | Composite Control's OnLoad
| > | > > | > | Submit button's OnClick - At this point, the controls in the
| > | > composite
| > | > > | > | control have no listitems and no selectedValue properties.
| > | > > | > |
| > | > > | > | I have statically added the composite control onto the same
| page
| > | as
| > | > > the
| > | > > | > | dynamic one, so here is the process in this scenario:
| > | > > | > | Page_Load
| > | > > | > | Composite Control's OnLoad (The one whose parent is Page)
| > | > > | > | DataList's OnLoad
| > | > > | > | Composite Control's OnLoad (The one whose parent is the
Custom
| > | > > DataList)
| > | > > | > | Submit button's OnClick - At this point, the controls in the
| > | > > statically
| > | > > | > | declared composite control have listitems and have values
for
| > | > > | > selectedValue
| > | > > | > | properties.
| > | > > | > |
| > | > > | > | So the same control at the same time - the one outside the
| > custom
| > | > > | Datalist
| > | > > | > | has its controls' state set up correctly, the ones inside
does
| > | not.
| > | > > | > |
| > | > > | > | So the same reason is at play here. Maybe since i am
| dynamically
| > | > > | creating
| > | > > | > | the class using reflection (Assembly.CreateInstance()) that
| has
| > | > > | something
| > | > > | > to
| > | > > | > | do with it?
| > | > > | > |
| > | > > | > | Please help mr. Cheng.
| > | > > | > |
| > | > > | > | Thank you very much!
| > | > > | > |
| > | > > | > | TS
| > | > > | > |
| > | > > | > |
| > | > > | > |
| > | message
| > | > > | > | | > | > > | > | > Hi TS,
| > | > > | > | >
| > | > > | > | > First, I'm glad that you've got your composite control
work,
| > all
| > | > the
| > | > > | > | > dropdownlist's postback events can fire correctly,yes?
| > | > > | > | >
| > | > > | > | > As for the new problem you encountered when adding your
| > | composite
| > | > > | > control
| > | > > | > | > into DataList's item, is the DataList the asp.net's
buildin
| > | > DataList
| > | > > | > | > control? And since you mentioned that you dynamically add
| > your
| > | > > | control
| > | > > | > | > into it, how do you dynamically add your custom control?
| Will
| > | > there
| > | > > | > occur
| > | > > | > | > problem if you statically add your control into DataList?
| > | > > | > | >
| > | > > | > | > Thanks,
| > | > > | > | >
| > | > > | > | > Steven Cheng
| > | > > | > | > Microsoft Online Support
| > | > > | > | >
| > | > > | > | > Get Secure! www.microsoft.com/security
| > | > > | > | > (This posting is provided "AS IS", with no warranties, and
| > | confers
| > | > > no
| > | > > | > | > rights.)
| > | > > | > | >
| > | > > | > | > --------------------
| > | > > | > | > | From: "TS" <[email protected]>
| > | > > | > | > | References: <[email protected]>
| > | > > | > | > <[email protected]>
| > | > > | > | > <[email protected]>
| > | > > | > | > <[email protected]>
| > | > > | > | > <unRs#[email protected]>
| > | > > | > | > <[email protected]>
| > | > > | > | > | Subject: Re: explanation of when need to repopulate
| control
| > | > > | > | > | Date: Wed, 3 Aug 2005 19:07:16 -0500
| > | > > | > | > | Lines: 1153
| > | > > | > | > | X-Priority: 3
| > | > > | > | > | X-MSMail-Priority: Normal
| > | > > | > | > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > | > > | > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > | > > | > | > | Message-ID: <#[email protected]>
| > | > > | > | > | Newsgroups:
| > | > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | > > | > | > | NNTP-Posting-Host: 103nat100.tea.state.tx.us
| 198.214.103.100
| > | > > | > | > | Path:
| > | > > | TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP14.phx.gbl
| > | > > | > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > | > > | > | >
| microsoft.public.dotnet.framework.aspnet.buildingcontrols:3989
| > | > > | > | > | X-Tomcat-NG:
| > | > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | > > | > | > |
| > | > > | > | > | Well Steve, I am almost done. My control works well,
| except
| > | its
| > | > > not
| > | > > | in
| > | > > | > | the
| > | > > | > | > | framework i just mentioned. Adding my control
dynamically
| to
| > | the
| > | > > | > | > datalist's
| > | > > | > | > | item may be the root of the cause. i've made sure all
| custom
| > | > > | controls
| > | > > | > | > | implmenet INamingContainer & I think all controls have
| their
| > | > id's
| > | > > | set,
| > | > > | > | so
| > | > > | > | > | what else can i do?
| > | > > | > | > |
| > | > > | > | > | thanks a bunch
| > | > > | > | > |
| > | > > | > | > | | > | > > | > | > | > I have figured the cause of the problem, sort of. My
| main
| > | > > control
| > | > > | > was
| > | > > | > | > | being
| > | > > | > | > | > loaded dynamically during a custom data list control's
| > | > > | ItemDataBound
| > | > > | > | > | event,
| > | > > | > | > | > and then added to the e.item.controls collection.
Once I
| > | > removed
| > | > > | it
| > | > > | > | from
| > | > > | > | > | > here, the correct event was called in my control. the
| > | problem
| > | > > is i
| > | > > | > | need
| > | > > | > | > to
| > | > > | > | > | > keep it where it is because of the way the page works.
| > | > > | > | > | >
| > | > > | > | > | > I tried to add INamingContainer to the custom
Datalist,
| > but
| > | > that
| > | > > | > | didn't
| > | > > | > | > | > help. Any ideas what could make this happen?
| > | > > | > | > | >
| > | > > | > | > | > thanks so much, i know i'm being a pain, but i'm
stuck!
| > | > > | > | > | >
| > | > > | > | > | > This is the custom DataLists' event:
| > | > > | > | > | > protected override void
| > | OnItemDataBound(DataListItemEventArgs
| > | > e)
| > | > > | > | > | >
| > | > > | > | > | > {
| > | > > | > | > | >
| > | > > | > | > | > base.OnItemDataBound(e);
| > | > > | > | > | >
| > | > > | > | > | > Parameter parameter = (Parameter)e.Item.DataItem;
| > | > > | > | > | >
| > | > > | > | > | > try
| > | > > | > | > | >
| > | > > | > | > | > {
| > | > > | > | > | >
| > | > > | > | > | > Control control;
| > | > > | > | > | >
| > | > > | > | > | > if(parameter.Type == ParameterType.Control)
| > | > > | > | > | >
| > | > > | > | > | > control =
this.Page.LoadControl(parameter.ControlPath);
| > | > > | > | > | >
| > | > > | > | > | > else
| > | > > | > | > | >
| > | > > | > | > | > {
| > | > > | > | > | >
| > | > > | > | > | > Assembly assembly = parameter.Assembly;
| > | > > | > | > | >
| > | > > | > | > | > if(assembly == null)
| > | > > | > | > | >
| > | > > | > | > | > {
| > | > > | > | > | >
| > | > > | > | > | > // The control didn't declare its own assembly, so use
| the
| > | > > | report's
| > | > > | > | > | > ControlsAssembly
| > | > > | > | > | >
| > | > > | > | > | > assembly = this.ControlsAssembly;
| > | > > | > | > | >
| > | > > | > | > | > // Ther report's ControlsAssembly is null, so use
| current
| > | > page's
| > | > > | > | > assembly
| > | > > | > | > | >
| > | > > | > | > | > if(assembly == null)
| > | > > | > | > | >
| > | > > | > | > | > assembly = this.Page.GetType().BaseType.Assembly;
| > | > > | > | > | >
| > | > > | > | > | > }
| > | > > | > | > | >
| > | > > | > | > | >
| > | > > | > | > | > control = (Control)
| > | > > | > | assembly.CreateInstance(parameter.ControlTypeName);
| > | > > | > | > | >
| > | > > | > | > | > }
| > | > > | > | > | >
| > | > > | > | > | > control.ID = parameter.Name;
| > | > > | > | > | >
| > | > > | > | > | > // Set up all the properties of this control from the
| > | > > | > | > parameter.properties
| > | > > | > | > | >
| > | > > | > | > | > foreach(DictionaryEntry de in parameter.Properties)
| > | > > | > | > | >
| > | > > | > | > | > SetProperty(de.Key.ToString(), de.Value.ToString(),
| > | control);
| > | > > | > | > | >
| > | > > | > | > | >
| > | > > | > | > | > e.Item.Controls.Add(control);
| > | > > | > | > | >
| > | > > | > | > | > }
| > | > > | > | > | >
| > | > > | > | > | > catch (Exception ex)
| > | > > | > | > | >
| > | > > | > | > | > {
| > | > > | > | > | >
| > | > > | > | > | > throw new ApplicationException("Unable to render
| criteria.
| > | > > Reason:
| > | > > | > " +
| > | > > | > | > | > ex.Message, ex);
| > | > > | > | > | >
| > | > > | > | > | > }
| > | > > | > | > | >
| > | > > | > | > | > }
| > | > > | > | > | >
| > | > > | > | > | > | > | > > | > | > | > > In testing, i removed the main parent dropdown and
| only
| > | left
| > | > > the
| > | > > | 2
| > | > > | > | > below
| > | > > | > | > | > it.
| > | > > | > | > | > > this time, the same scenario happened...when the
child
| > | > > dropdown
| > | > > | > list
| > | > > | > | > | > > autopostsback, it's immediate parent's
| > | selectedindexchanged
| > | > > | event
| > | > > | > | > fires!
| > | > > | > | > | I
| > | > > | > | > | > 'm
| > | > > | > | > | > > starting to pull my hair out now...I"m stuck!
| > | > > | > | > | > >
| > | > > | > | > | > > please help superman
| > | > > | > | > | > >
| > | > > | > | > | > > | > | > > | > | > | > > > Another problem:
| > | > > | > | > | > > >
| > | > > | > | > | > > > while i'm waiting on your remark to my last post,
i
| > | > removed
| > | > > | the
| > | > > | > | sub
| > | > > | > | > | > > > composite controls from my composite control so
that
| > | there
| > | > > is
| > | > > | > only
| > | > > | > | > | drop
| > | > > | > | > | > > down
| > | > > | > | > | > > > lists on it. During CreateChildcontrols, i load
the
| > main
| > | > > drop
| > | > > | > down
| > | > > | > | > | using
| > | > > | > | > | > > > databind. When the page is sent to browser for the
| > first
| > | > > time,
| > | > > | i
| > | > > | > | > have
| > | > > | > | > | my
| > | > > | > | > | > > > main drop down filled. I then select an item and
its
| > | > > | > | > | > SelectedIndexChanged
| > | > > | > | > | > > > fires and populates the send drop down list. Then
| > when i
| > | > > | select
| > | > > | > an
| > | > > | > | > | item
| > | > > | > | > | > > from
| > | > > | > | > | > > > it, it posts back, and the event that gets called
is
| > the
| > | > > | > | main(first)
| > | > > | > | > | > > > dropdown list's SelectedIndexChanged event, which
| then
| > | > > | > | re-populates
| > | > > | > | > | the
| > | > > | > | > | > > > second drop down list, then the control returns to
| the
| > | > > browser
| > | > > | > | (The
| > | > > | > | > | > > > SelectedIndexChanged event never fired for the 2nd
| > | > > dropdown's
| > | > > | > | > changed
| > | > > | > | > | > > > event.???
| > | > > | > | > | > > >
| > | > > | > | > | > > > thanks again
| > | > > | > | > | > > >
| > | > > | > | > | > > > using System;
| > | > > | > | > | > > >
| > | > > | > | > | > > > using System.Collections.Specialized;
| > | > > | > | > | > > >
| > | > > | > | > | > > > using System.Web.UI;
| > | > > | > | > | > > >
| > | > > | > | > | > > > using System.Web.UI.WebControls;
| > | > > | > | > | > > >
| > | > > | > | > | > > > using System.Text;
| > | > > | > | > | > > >
| > | > > | > | > | > > > using OperationsTeams.Business;
| > | > > | > | > | > > >
| > | > > | > | > | > > > using OperationsTeams.Data;
| > | > > | > | > | > > >
| > | > > | > | > | > > > using OperationsTeams.Reporting;
| > | > > | > | > | > > >
| > | > > | > | > | > > > using OperationsTeams.Reporting.WebControls;
| > | > > | > | > | > > >
| > | > > | > | > | > > > namespace OperationsTeams.Web.ReportControls
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > /// <summary>
| > | > > | > | > | > > >
| > | > > | > | > | > > > /// Summary description for FiscalAgentHierarchy.
| > | > > | > | > | > > >
| > | > > | > | > | > > > /// </summary>
| > | > > | > | > | > > >
| > | > > | > | > | > > > public class FiscalAgentHierarchy : WebControl,
| > | > > | > | > | IReportParameterControl,
| > | > > | > | > | > > > INamingContainer
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > public FiscalAgentHierarchy()
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > Parameters.Add(new Parameter("@SchoolYear"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > Parameters.Add(new Parameter("@ReportingGroup"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > Parameters.Add(new Parameter("@FiscalAgentID"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > Parameters.Add(new Parameter("@FundingSourceID"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > Parameters.Add(new Parameter("@ProviderID"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > Parameters.Add(new Parameter("@SiteID"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > Parameters.Add(new Parameter("@ClassID"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > Parameters["@SchoolYear"].Value = 2006;
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > > > #region Events
| > | > > | > | > | > > >
| > | > > | > | > | > > > protected override void OnLoad(EventArgs e)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > base.OnLoad (e);
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > > > // The last state of controls from viewstate is
now
| > | loaded
| > | > > | > (Before
| > | > > | > | > the
| > | > > | > | > | > > > client data is processed)
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > > > protected override void OnPreRender(EventArgs e)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > base.OnPreRender (e);
| > | > > | > | > | > > >
| > | > > | > | > | > > > // The controls now have the client values from
the
| > the
| > | > last
| > | > > | > | > postback
| > | > > | > | > | > > >
| > | > > | > | > | > > > // ddlFundingSource.Visible =
FundingSourceVisible;
| > | > > | > | > | > > >
| > | > > | > | > | > > > // ddlProviders.Visible = ProviderVisible;
| > | > > | > | > | > > >
| > | > > | > | > | > > > // ddlSites.Visible = SiteVisible;
| > | > > | > | > | > > >
| > | > > | > | > | > > > // ddlClasses.Visible = ClassVisible;
| > | > > | > | > | > > >
| > | > > | > | > | > > > // ddlSites.Items.Add(new ListItem("help","1"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > // ddlSites.Items.Add(new ListItem("me","2"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > // ddlSites.Visible = true;
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > private void
| > | > > | > rysReportingYearSelector_ReportingYearChanged(object
| > | > > | > | > | > sender,
| > | > > | > | > | > > > EventArgs e)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > // this.LoadFundingSource();
| > | > > | > | > | > > >
| > | > > | > | > | > > > // this.LoadProviders();
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > private void
| fasFiscalAgent_FiscalAgentChanged(object
| > | > > sender,
| > | > > | > | > | EventArgs
| > | > > | > | > | > e)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.LoadFundingSource();
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.LoadProviders();
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > private void
| > | ddlFundingSource_SelectedIndexChanged(object
| > | > > | > sender,
| > | > > | > | > | > > EventArgs
| > | > > | > | > | > > > e)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > LoadSites();
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > private void
| ddlProviders_SelectedIndexChanged(object
| > | > > sender,
| > | > > | > | > | EventArgs
| > | > > | > | > | > e)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > LoadSites();
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > private void ddlSites_SelectedIndexChanged(object
| > | sender,
| > | > > | > | EventArgs
| > | > > | > | > e)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > LoadClasses();
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > #endregion
| > | > > | > | > | > > >
| > | > > | > | > | > > > protected override void CreateChildControls()
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.ddlFundingSource = new DropDownList();
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.ddlProviders = new DropDownList();
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.ddlSites = new DropDownList();
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.ddlClasses = new DropDownList();
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlFundingSource.ID = FundingSourceControlId;
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlProviders.ID = ProvidersControlId;
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlSites.ID = SitesControlId;
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlClasses.ID = ClassesControlId;
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > > > LoadProviders();
| > | > > | > | > | > > >
| > | > > | > | > | > > > // start containing table
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.Controls.Add(WebHelper.MakeLiteral("<table
| > | > > cellpadding=0
| > | > > | > | > | > > > cellspacing=0><tr><td>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > // this.Controls.Add(rysReportingYearSelector);
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > // this.Controls.Add(fasFiscalAgent);
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>Funding
| > | > > | > | > | > > > Source</td><td>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.Controls.Add(ddlFundingSource);
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > >
| > | > > | > | > | >
| > | > > | > | > |
| > | > > | > | >
| > | > > | > |
| > | > > | >
| > | > > |
| > | > >
| > | >
| > |
| >
|
this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>Providers</td><td>")
| > | > > | > | > | > > > );
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.Controls.Add(ddlProviders);
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | >
| > | > > | > | >
| > | > > | >
| > | > >
| > |
| this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>Sites</td><td>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.Controls.Add(ddlSites);
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr><tr><td>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > >
| > | > > | > | > | >
| > | > > | > | > |
| > | > > | > | >
| > | > > | > |
| > | > > | >
| > | > > |
| > | > >
| > | >
| > |
| >
|
this.Controls.Add(WebHelper.MakeLiteral("<table><tr><td>Classes</td><td>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.Controls.Add(ddlClasses);
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > // end containing table
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | this.Controls.Add(WebHelper.MakeLiteral("</td></tr></table>"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlFundingSource.SelectedIndexChanged += new
| > | > > | > | > | > > >
EventHandler(ddlFundingSource_SelectedIndexChanged);
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlProviders.SelectedIndexChanged += new
| > | > > | > | > | > > > EventHandler(ddlProviders_SelectedIndexChanged);
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlSites.SelectedIndexChanged += new
| > | > > | > | > | > > > EventHandler(ddlSites_SelectedIndexChanged);
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlFundingSource.AutoPostBack =
| > | ddlProviders.AutoPostBack
| > | > =
| > | > > | > | > | > > > ddlSites.AutoPostBack = true;
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > private void LoadFundingSource()
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > int fiscalAgentId =
| > | > > | > 1;//this.fasFiscalAgent.SelectedFiscalAgentId;
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > > > if(fiscalAgentId != int.MinValue)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > FundingSourceVisible = true;
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.ddlFundingSource.DataSource =
| > | > > | > | > | > FiscalAgentFunding.Find(fiscalAgentId);
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.ddlFundingSource.DataTextField =
| > | "ShortDescription";
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.ddlFundingSource.DataValueField = "CodeId";
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.ddlFundingSource.DataBind();
| > | > > | > | > | > > >
| > | > > | > | > | > > > if(this.ddlFundingSource.Items.Count > 1)
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.ddlFundingSource.Items.Insert(0, new
| > | > > | ListItem(string.Empty,
| > | > > | > | > | > > > string.Empty));
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > else
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > FundingSourceVisible = false;
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > private void LoadProviders()
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > int fiscalAgentId =
| > | > > 1;//fasFiscalAgent.SelectedFiscalAgentId;
| > | > > | > | > | > > >
| > | > > | > | > | > > > if(fiscalAgentId != int.MinValue)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > // ddlSites.Items.Add(new ListItem("help","1"));
| > | > > | > | > | > > >
| > | > > | > | > | > > > // ddlSites.Items.Add(new ListItem("me","2"));
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > > > ProviderVisible = true;
| > | > > | > | > | > > >
| > | > > | > | > | > > > // are these dates
| correct???????????????????????????
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlProviders.DataSource =
| > | > > | > FiscalAgentProvider.Find(fiscalAgentId,
| > | > > | > | > new
| > | > > | > | > | > > > DateTime(2005,7,1), new
| > | > > | > | > | > > >
| > | > > | > | > |
| > | > > | >
| > | >
| DateTime(2006,6,30));//rysReportingYearSelector.ReportingYearStartDate,
| > | > > | > | > | > > > rysReportingYearSelector.ReportingYearEndDate); //
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlProviders.DataTextField = "ProviderName";
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlProviders.DataValueField = "ProviderId";
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlProviders.DataBind();
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlProviders.Items.Insert(0, new
| > ListItem(string.Empty,
| > | > > | > | > | string.Empty));
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > else
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > this.ddlProviders.Items.Clear();
| > | > > | > | > | > > >
| > | > > | > | > | > > > ProviderVisible = false;
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > // LoadSites();
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > private void LoadSites()
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > if(ddlProviders.SelectedValue != string.Empty)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > // Load the Site search parameters.
| > | > > | > | > | > > >
| > | > > | > | > | > > > SiteFindArgs siteFindArgs=new SiteFindArgs();
| > | > > | > | > | > > >
| > | > > | > | > | > > > siteFindArgs.FiscalAgentId=1;
| > | > > | > | > | > > >
| > //Convert.ToInt32(fasFiscalAgent.SelectedFiscalAgentId);
| > | > > | > | > | > > >
| > | > > | > | > | > > > SiteVisible = true;
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlSites.DataSource =
| > Business.Site.Find(siteFindArgs);
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlSites.DataTextField = "Name";
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlSites.DataValueField = "SiteId";
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlSites.DataBind();
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlSites.Items.Insert(0, new
ListItem(string.Empty,
| > | > > | > | string.Empty));
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > else
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlSites.Items.Clear();
| > | > > | > | > | > > >
| > | > > | > | > | > > > SiteVisible = false;
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > // LoadClasses();
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > private void LoadClasses()
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > if(ddlSites.SelectedValue != string.Empty)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > AdultEdClassFindArgs adultEdClassFindArgs = new
| > | > > | > | > | AdultEdClassFindArgs();
| > | > > | > | > | > > >
| > | > > | > | > | > > > // adultEdClassFindArgs.FiscalAgentId =
| > | > > | > | > | > > >
| Convert.ToInt32(fasFiscalAgent.SelectedFiscalAgentId);
| > | > > | > | > | > > >
| > | > > | > | > | > > > // adultEdClassFindArgs.ReportingYearStartDate =
| > | > > | > | > | > > > rysReportingYearSelector.ReportingYearStartDate;
| > | > > | > | > | > > >
| > | > > | > | > | > > > // adultEdClassFindArgs.ReportingYearEndDate =
| > | > > | > | > | > > > rysReportingYearSelector.ReportingYearEndDate;
| > | > > | > | > | > > >
| > | > > | > | > | > > > // adultEdClassFindArgs.ProviderName =
| > | > > | > ddlProviders.SelectedValue;
| > | > > | > | > | > > >
| > | > > | > | > | > > > // adultEdClassFindArgs.SiteName =
| > | ddlSites.SelectedValue;
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > > > ClassVisible = true;
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlClasses.DataSource =
| > | > > | AdultEdClass.Find(adultEdClassFindArgs);
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlClasses.DataTextField = "Name";
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlClasses.DataValueField = "ClassId";
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlClasses.DataBind();
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlClasses.Items.Insert(0, new
| ListItem(string.Empty,
| > | > > | > | > string.Empty));
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > else
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > ddlClasses.Items.Clear();
| > | > > | > | > | > > >
| > | > > | > | > | > > > ClassVisible = false;
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > > > #region Public Properties
| > | > > | > | > | > > >
| > | > > | > | > | > > > #region IReportParameterControl Members
| > | > > | > | > | > > >
| > | > > | > | > | > > > public object ParameterValue
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > get{ return null; }
| > | > > | > | > | > > >
| > | > > | > | > | > > > set{ /*do nothing */ }
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > public ParameterCollection Parameters
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > get{ return parameters; }
| > | > > | > | > | > > >
| > | > > | > | > | > > > set{ parameters = value;}
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > #endregion
| > | > > | > | > | > > >
| > | > > | > | > | > > > protected bool FundingSourceVisible
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > get
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > if(ViewState["FundingSourceVisible"] == null)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > return false;
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > return (bool)ViewState["FundingSourceVisible"];
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > set
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > TrackViewState();
| > | > > | > | > | > > >
| > | > > | > | > | > > > ViewState["FundingSourceVisible"] = value;
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > protected bool ProviderVisible
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > get
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > if(ViewState["ProviderVisible"] == null)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > return false;
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > return (bool)ViewState["ProviderVisible"];
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > set
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > TrackViewState();
| > | > > | > | > | > > >
| > | > > | > | > | > > > ViewState["ProviderVisible"] = value;
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > protected bool SiteVisible
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > get
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > if(ViewState["SiteVisible"] == null)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > return false;
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > return (bool)ViewState["SiteVisible"];
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > set
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > TrackViewState();
| > | > > | > | > | > > >
| > | > > | > | > | > > > ViewState["SiteVisible"] = value;
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > protected bool ClassVisible
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > get
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > if(ViewState["ClassVisible"] == null)
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > return false;
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > return (bool)ViewState["ClassVisible"];
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > set
| > | > > | > | > | > > >
| > | > > | > | > | > > > {
| > | > > | > | > | > > >
| > | > > | > | > | > > > TrackViewState();
| > | > > | > | > | > > >
| > | > > | > | > | > > > ViewState["ClassVisible"] = value;
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > #endregion
| > | > > | > | > | > > >
| > | > > | > | > | > > > #region Private Member Variables
| > | > > | > | > | > > >
| > | > > | > | > | > > > private DropDownList ddlFundingSource;
| > | > > | > | > | > > >
| > | > > | > | > | > > > private DropDownList ddlProviders;
| > | > > | > | > | > > >
| > | > > | > | > | > > > private DropDownList ddlSites;
| > | > > | > | > | > > >
| > | > > | > | > | > > > private DropDownList ddlClasses;
| > | > > | > | > | > > >
| > | > > | > | > | > > > private ParameterCollection parameters = new
| > | > > | > | ParameterCollection();
| > | > > | > | > | > > >
| > | > > | > | > | > > > #endregion
| > | > > | > | > | > > >
| > | > > | > | > | > > > #region Private Constants
| > | > > | > | > | > > >
| > | > > | > | > | > > > private const string
ReportingYearSelectorControlId
| =
| > | > > | > | > | > > > "rysReportingYearSelector";
| > | > > | > | > | > > >
| > | > > | > | > | > > > private const string FiscalAgentSelectorControlId
=
| > | > > | > | > | > > > "fasFiscalAgentSelector";
| > | > > | > | > | > > >
| > | > > | > | > | > > > private const string FundingSourceControlId =
| > | > > | > "ddlFundingSource";
| > | > > | > | > | > > >
| > | > > | > | > | > > > private const string FundingSourceLabelControlId =
| > | > > | > | > "lblFundingSource";
| > | > > | > | > | > > >
| > | > > | > | > | > > > private const string ProvidersControlId =
| > | "ddlProviders";
| > | > > | > | > | > > >
| > | > > | > | > | > > > private const string ProvidersLabelControlId =
| > | > > "lblProviders";
| > | > > | > | > | > > >
| > | > > | > | > | > > > private const string SitesControlId = "ddlSites";
| > | > > | > | > | > > >
| > | > > | > | > | > > > private const string SitesLabelControlId =
| "lblSites";
| > | > > | > | > | > > >
| > | > > | > | > | > > > private const string ClassesControlId =
| "ddlClasses";
| > | > > | > | > | > > >
| > | > > | > | > | > > > private const string ClassesLabelControlId =
| > | "lblClasses";
| > | > > | > | > | > > >
| > | > > | > | > | > > > #endregion
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > > }
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > > > "Steven Cheng[MSFT]"
<[email protected]>
| > | wrote
| > | > in
| > | > > | > | message
| > | > > | > | > | > > > | > | > > | > | > | > > > > Hi TS,
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > See you again :), seems you're rushing in a
| asp.net
| > | > > project
| > | > > | > | these
| > | > > | > | > | > days?
| > | > > | > | > | > > > > For the question you mentioned in this post,
here
| > are
| > | > some
| > | > > | of
| > | > > | > my
| > | > > | > | > | > > > > understanding and suggestions:
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > 1. ASP.NET controls derived from Control will
| > | > > automatically
| > | > > | > | > maintain
| > | > > | > | > | > its
| > | > > | > | > | > > > > ViewStates according to the asp.net web page's
| > events
| > | > > | > sequence.
| > | > > | > | So
| > | > > | > | > | for
| > | > > | > | > | > > > > composite control, those nested sub Controls'
| status
| > | > > | > (properties
| > | > > | > | > | which
| > | > > | > | > | > > be
| > | > > | > | > | > > > > persistd in Viewsstate ) will be store and
| retrieve
| > | > > | > | automatically.
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > 2. However, there're some thing we need to care
| when
| > | > > | building
| > | > > | > | > | > composite
| > | > > | > | > | > > > > control:
| > | > > | > | > | > > > > #remember to implement INamingContainer for
| controls
| > | > which
| > | > > | > will
| > | > > | > | > have
| > | > > | > | > | > > > nested
| > | > > | > | > | > > > > sub controls. Otherwise, even handler mapping,
| > | ViewState
| > | > > | > loading
| > | > > | > | > | will
| > | > > | > | > | > > > occur
| > | > > | > | > | > > > > unexpectedly.
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > #Do remember to assign a explicit ID for each
sub
| > | > > | > controls(same
| > | > > | > | > | reason
| > | > > | > | > | > > as
| > | > > | > | > | > > > > #1). Also, please always try best to add
| subcontrols
| > | in
| > | > > the
| > | > > | > | > | > > > > "CreateChildControls" method(just create control
| > | > > hierarchy)
| > | > > | > and
| > | > > | > | > put
| > | > > | > | > | > > > > manipulating code in postback event or
PreRender
| > | event.
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > In addition, for your detaile scenario, I've
just
| > | built
| > | > a
| > | > > | very
| > | > > | > | > | simple
| > | > > | > | > | > > demo
| > | > > | > | > | > > > > control which have three dropdownlists and The
| > "Top"
| > | > one
| > | > > | will
| > | > > | > | > | display
| > | > > | > | > | > > > > first(other twos invisible) and according to the
| top
| > | > one's
| > | > > | > | > | selection,
| > | > > | > | > | > > the
| > | > > | > | > | > > > > "Mid" dropdownlist will be pouplated and the
same
| > when
| > | > the
| > | > > | > | "mid"'s
| > | > > | > | > | > > > > selection changed......
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > Here's the control's code for your reference:
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > =========================
| > | > > | > | > | > > > > [DefaultProperty("Text"),
| > | > > | > | > | > > > > ToolboxData("<{0}:MultiListControl
| > | > > | > | > | > > runat=server></{0}:MultiListControl>")]
| > | > > | > | > | > > > > public class MultiListControl :
| > | > > | > | > | System.Web.UI.WebControls.WebControl,
| > | > > | > | > | > > > > INamingContainer
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > private string text;
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > private DropDownList lstTop;
| > | > > | > | > | > > > > private DropDownList lstMid;
| > | > > | > | > | > > > > private DropDownList lstBot;
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > protected bool MidVisible
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > get{
| > | > > | > | > | > > > > if(ViewState["MID_VISIBLE"] == null)
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > return false;
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > return (bool)ViewState["MID_VISIBLE"];
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > set{
| > | > > | > | > | > > > > TrackViewState();
| > | > > | > | > | > > > > ViewState["MID_VISIBLE"] = value;
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > protected bool BotVisible
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > get
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > if(ViewState["BOT_VISIBLE"] == null)
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > return false;
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > return (bool)ViewState["BOT_VISIBLE"];
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > set
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > TrackViewState();
| > | > > | > | > | > > > > ViewState["BOT_VISIBLE"] = value;
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > [Bindable(true),
| > | > > | > | > | > > > > Category("Appearance"),
| > | > > | > | > | > > > > DefaultValue("")]
| > | > > | > | > | > > > > public string Text
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > get
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > return text;
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > set
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > text = value;
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > protected override void CreateChildControls()
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > Controls.Clear();
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > Controls.Add(
| > | > > | > | > | > > > > new LiteralControl(
| > | > > | > | > | > > > > @"
| > | > > | > | > | > > > > <table width='100%'>
| > | > > | > | > | > > > > <tr><td>
| > | > > | > | > | > > > > "));
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > lstTop = new DropDownList();
| > | > > | > | > | > > > > lstTop.ID = "lstTop";
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > lstTop.Items.Add("----------");
| > | > > | > | > | > > > > lstTop.Items.Add("Top_Item_1");
| > | > > | > | > | > > > > lstTop.Items.Add("Top_Item_2");
| > | > > | > | > | > > > > lstTop.Items.Add("Top_Item_3");
| > | > > | > | > | > > > > lstTop.Items.Add("Top_Item_4");
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > Controls.Add(lstTop);
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > Controls.Add(
| > | > > | > | > | > > > > new LiteralControl(
| > | > > | > | > | > > > > @"<br/>"
| > | > > | > | > | > > > > ));
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > lstMid = new DropDownList();
| > | > > | > | > | > > > > lstMid.ID = "lstMid";
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > Controls.Add(lstMid);
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > Controls.Add(
| > | > > | > | > | > > > > new LiteralControl(
| > | > > | > | > | > > > > @"<br/>"
| > | > > | > | > | > > > > ));
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > lstBot = new DropDownList();
| > | > > | > | > | > > > > lstBot.ID = "lstBot";
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > Controls.Add(lstBot);
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > Controls.Add(
| > | > > | > | > | > > > > new LiteralControl(
| > | > > | > | > | > > > > @"
| > | > > | > | > | > > > > </td></tr>
| > | > > | > | > | > > > > </table>
| > | > > | > | > | > > > > "
| > | > > | > | > | > > > > ));
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > lstTop.SelectedIndexChanged +=new
| > | > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > | > > | > | > | > > > > lstMid.SelectedIndexChanged +=new
| > | > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > | > > | > | > | > > > > lstBot.SelectedIndexChanged +=new
| > | > > | > | > | > > EventHandler(lst_SelectedIndexChanged);
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > lstTop.AutoPostBack = lstMid.AutoPostBack =
| > | > > | > lstBot.AutoPostBack
| > | > > | > | =
| > | > > | > | > | > true;
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > protected override void OnPreRender(EventArgs e)
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > base.OnPreRender (e);
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > lstMid.Visible = MidVisible;
| > | > > | > | > | > > > > lstBot.Visible = BotVisible;
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > private void lst_SelectedIndexChanged(object
| sender,
| > | > > | > | > | System.EventArgs
| > | > > | > | > | > e)
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > DropDownList lst = sender as DropDownList;
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > switch(lst.ID)
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > case "lstTop":
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > if(lst.SelectedIndex != 0)
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > lstMid.DataSource =
| GetSubItems(lst.SelectedValue);
| > | > > | > | > | > > > > lstMid.DataTextField = "Text";
| > | > > | > | > | > > > > lstMid.DataValueField= "Value";
| > | > > | > | > | > > > > lstMid.DataBind();
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > MidVisible = true;
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > > else
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > MidVisible = BotVisible = false;
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > break;
| > | > > | > | > | > > > > case "lstMid":
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > lstBot.DataSource =
| GetSubItems(lst.SelectedValue);
| > | > > | > | > | > > > > lstBot.DataTextField = "Text";
| > | > > | > | > | > > > > lstBot.DataValueField= "Value";
| > | > > | > | > | > > > > lstBot.DataBind();
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > MidVisible = BotVisible = true;
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > break;
| > | > > | > | > | > > > > case "lstBot":
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > break;
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > Page.Response.Write("<br>" + lst.ID +
| > | > > | > "_selectedindexchanged!" +
| > | > > | > | > | > > > > lst.EnableViewState);
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > #region --Helper functions---
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > public ListItemCollection GetSubItems(string
| parent)
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > ListItemCollection items = new
| ListItemCollection();
| > | > > | > | > | > > > > int count = parent.Length;
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > for(int i=0;i<count;++i)
| > | > > | > | > | > > > > {
| > | > > | > | > | > > > > items.Add(parent + "_Item_" + i);
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > return items;
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > #endregion
| > | > > | > | > | > > > > }
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > ========================
| > | > > | > | > | > > > > Hope helps. Thanks,
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > Steven Cheng
| > | > > | > | > | > > > > Microsoft Online Support
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > Get Secure! www.microsoft.com/security
| > | > > | > | > | > > > > (This posting is provided "AS IS", with no
| > warranties,
| > | > and
| > | > > | > | confers
| > | > > | > | > | no
| > | > > | > | > | > > > > rights.)
| > | > > | > | > | > > > >
| > | > > | > | > | > > > >
| > | > > | > | > | > > > > --------------------
| > | > > | > | > | > > > > | From: "TS" <[email protected]>
| > | > > | > | > | > > > > | References:
| > <[email protected]>
| > | > > | > | > | > > > > | Subject: Re: explanation of when need to
| > repopulate
| > | > > | control
| > | > > | > | > | > > > > | Date: Tue, 2 Aug 2005 18:32:23 -0500
| > | > > | > | > | > > > > | Lines: 39
| > | > > | > | > | > > > > | X-Priority: 3
| > | > > | > | > | > > > > | X-MSMail-Priority: Normal
| > | > > | > | > | > > > > | X-Newsreader: Microsoft Outlook Express
| > | 6.00.2800.1158
| > | > > | > | > | > > > > | X-MimeOLE: Produced By Microsoft MimeOLE
| > | > V6.00.2800.1165
| > | > > | > | > | > > > > | Message-ID:
| > <[email protected]>
| > | > > | > | > | > > > > | Newsgroups:
| > | > > | > | > | > > > >
| > | > > | > | > | > > >
| > | > > | > | > | > >
| > | > > | > | > | >
| > | > > | > | > |
| > | > > | > | >
| > | > > | > |
| > | > > | >
| > | > > |
| > | > >
| > | >
| > |
| >
|
microsoft.public.dotnet.framework.aspnet.webcontrols,microsoft.public.dotnet
| > | > > | > | > | > > > > framework.aspnet.buildingcontrols
| > | > > | > | > | > > > > | NNTP-Posting-Host: 103nat100.tea.state.tx.us
| > | > > | 198.214.103.100
| > | > > | > | > | > > > > | Path:
| > | > > | > | > | >
| > | > TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| > | > > | > | > | > > > > | Xref: TK2MSFTNGXA01.phx.gbl
| > | > > | > | > | > > > >
| > | > > | microsoft.public.dotnet.framework.aspnet.buildingcontrols:3979
| > | > > | > | > | > > > >
| > | > microsoft.public.dotnet.framework.aspnet.webcontrols:10243
| > | > > | > | > | > > > > | X-Tomcat-NG:
| > | > > | > | > | >
| microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | > > | > | > | > > > > |
| > | > > | > | > | > > > > | sorry, heres the scenario i'm trying to
| > accomplish:
| > | > > | > | > | > > > > | I have a composite control that contains 4
drop
| > down
| > | > > | lists.
| > | > > | > | When
| > | > > | > | > | the
| > | > > | > | > | > > > page
| > | > > | > | > | > > > > | loads initially, i want the first drop down
| filled
| > | and
| > | > > the
| > | > > | > | rest
| > | > > | > | > | > > > invisible.
| > | > > | > | > | > > > > | When you select an item in this ddl, it posts
| back
| > | to
| > | > > the
| > | > > | > | server
| > | > > | > | > | and
| > | > > | > | > | > > > based
| > | > > | > | > | > > > > | on its value, it populates its immediate
child's
| > | drop
| > | > > down
| > | > > | > | list.
| > | > > | > | > | So
| > | > > | > | > | > > now
| > | > > | > | > | > > > > the
| > | > > | > | > | > > > > | top ddl has a value selected and the 2nd one
| just
| > | has
| > | > > its
| > | > > | > | items
| > | > > | > | > | > > > populated.
| > | > > | > | > | > > > > | Then when the 2nd drop down list gets
selected,
| it
| > | > posts
| > | > > | to
| > | > > | > | the
| > | > > | > | > | > server
| > | > > | > | > | > > > and
| > | > > | > | > | > > > > | its value is used to populate(filter) the
items
| > for
| > | > the
| > | > > | 3rd
| > | > > | > | drop
| > | > > | > | > | > down
| > | > > | > | > | > > > > | list...and so on for each drop down list.
| > | > > | > | > | > > > > |
| > | > > | > | > | > > > > | Please tell me what i need to do to handle
post
| > back
| > | > > data
| > | > > | > and
| > | > > | > | > | > maintain
| > | > > | > | > | > > > > state
| > | > > | > | > | > > > > | from one postback to another while keeping the
| > drop
| > | > > | > downlists
| > | > > | > | > | filled
| > | > > | > | > | > > and
| > | > > | > | > | > > > > | their values persisted.
| > | > > | > | > | > > > > |
| > | > > | > | > | > > > > | thank you again!
| > | > > | > | > | > > > > |
| > | > > | > | > | > > > > |
| message
| > | > > | > | > | > > > > | | > | > > | > | > | > > > > | > I have a quesiton:
| > | > > | > | > | > > > > | > if i have a composite control and on its
| intial
| > | page
| > | > > | > | loading,
| > | > > | > | > i
| > | > > | > | > | > fill
| > | > > | > | > | > > > my
| > | > > | > | > | > > > > | (sub
| > | > > | > | > | > > > > | > control) drop down list's items collection
| from
| > | the
| > | > > | > database
| > | > > | > | > and
| > | > > | > | > | > > > return.
| > | > > | > | > | > > > > | > When the user hits a button to cause
postback,
| > the
| > | > > | control
| > | > > | > | is
| > | > > | > | > | > going
| > | > > | > | > | > > to
| > | > > | > | > | > > > > get
| > | > > | > | > | > > > > | > initialized, then does its items collection
| > that i
| > | > > | filled
| > | > > | > on
| > | > > | > | > the
| > | > > | > | > | > > > initial
| > | > > | > | > | > > > > | > page request get repopulated from viewstate?
| And
| > | on
| > | > > top
| > | > > | of
| > | > > | > | > that,
| > | > > | > | > | > if
| > | > > | > | > | > > > so,
| > | > > | > | > | > > > > | does
| > | > > | > | > | > > > > | > the list item that person selected in the
drop
| > | down
| > | > > list
| > | > > | > | again
| > | > > | > | > | set
| > | > > | > | > | > > > > itself
| > | > > | > | > | > > > > | as
| > | > > | > | > | > > > > | > the selected item in the list?
| > | > > | > | > | > > > > | >
| > | > > | > | > | > > > > | > OR do i have to re-load the items on every
| page
| > | > > request
| > | > > | > and
| > | > > | > | > then
| > | > > | > | > | > > > > populate
| > | > > | > | > | > > > > | > its value some other way???
| > | > > | > | > | > > > > | >
| > | > > | > | > | > > > > | > thanks a bunch
| > | > > | > | > | > > > > | >
| > | > > | > | > | > > > > | >
| > | > > | > | > | > > > > |
| > | > > | > | > | > > > > |
| > | > > | > | > | > > > > |
| > | > > | > | > | > > > >
| > | > > | > | > | > > >
| > | > > | > | > | > > >
| > | > > | > | > | > >
| > | > > | > | > | > >
| > | > > | > | > | >
| > | > > | > | > | >
| > | > > | > | > |
| > | > > | > | > |
| > | > > | > | > |
| > | > > | > | >
| > | > > | > |
| > | > > | > |
| > | > > | > |
| > | > > | >
| > | > > |
| > | > > |
| > | > > |
| > | > >
| > | >
| > | >
| > |
| > |
| > |
| >
|
|
|
 
T

TS

Steven, I have fixed this problem by overriding the following:

protected override void LoadViewState(object savedState)
{
base.LoadViewState (savedState);
if (this.Page.IsPostBack && this.parameters != null)
{
DataBind();
}
}

I don't fully understand why it now works, i was hoping you could shed some
light on it. It has something to do with the state of the nested controls in
the datalist needing to be initiated before its viewstate and postbackdata
was loaded.

thanks
 
T

TS

Same subject different control:

I have a control that is inheriting from listbox. I also declare a
dropdownlist and populate both of them when overriding onInit. I can't get
the postback values to get reset up after postback (there are other controls
on the page that intiate a postback that doesn't effect this control, but
this control still needs to keep its state)

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using TEA.CIS.BusinessObjects;

using TEA.Teams.Reporting;
using TEA.Teams.Reporting.WebControls;
namespace TEA.CIS.Web
{
/// <summary>
/// Summary description for GradeLevel.
/// </summary>
public class GradeLevel : ListBox, INamingContainer
{
private DropDownList ddlGradeLevel = new DropDownList();

public GradeLevel()
{
}

protected override void OnInit(EventArgs e)
{
base.OnInit (e);

// Load in onInit so that its state can be reset after this event (before
page_Load)
CodeCache.PopulateListWithCodes(this, CodeCacheTable.GradeLevelCodes);
this.Items.Insert(0, new ListItem("ALL", string.Empty));
this.SelectedIndex = 0;

foreach(ListItem item in this.Items)
ddlGradeLevel.Items.Add(item);

ddlGradeLevel.SelectedIndex = 0;

// ViewState["ddl"] = ddlGradeLevel.Items;
}


/// <summary>
/// Overide Render Control to display listbox or dropdownlist.
/// </summary>
/// <param name="writer"></param>
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<table cellspacing=\"0\" cellpadding=\"2\" width=\"100%\">");
writer.Write("<tr><td class=\"reportCriteria\" align=right>Grade
Level:</td><td width=\"100%\" class=\"reportCriteria\">");

if (this.SelectionMode == ListSelectionMode.Multiple)
{
base.Render (writer);
}
else
{
ddlGradeLevel.RenderControl(writer);
}

writer.Write("</td></tr></table>");
}
}
}
 
S

Steven Cheng[MSFT]

Hi TS,

As for your former problem, I'm not sure on the actual things which makes
the modification you mentioned resolve it from a genreal view. I shall
have some further investigation on the control.
For the new question you mentioned, I'm afraid I don't think your current
implementation is a good one. For your scenario, you'd like to display a
dropdownlist or listbox depending on the selectmode property, the
reasonable approach should be:

use the CreateChildControl rather than Render method to construct the
Control. And depend on the "SelectMode" property, we determine whether to
create the DropDownList or ListBox and add it into the Controls collection.
(note, this is the key point, any control we'd like to display and have
events to deal with should be added into the composite control's control
structure )

Also, for databinding, I suggest you also override the "DataBind" method so
as to determine whether to bind data with the DropDownList or ListBox.

If you feel necessary, I can try building a simple demo control, but this
may take some time. :). Please feel free to let me know if you have
anything unclear. Thanks,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)



--------------------
| Thread-Topic: explanation of when need to repopulate control
| thread-index: AcWoK5i0esAV8aFYTKWM0/C21agehA==
| X-WBNR-Posting-Host: 198.214.101.80
| From: "=?Utf-8?B?VFM=?=" <[email protected]>
| References: <[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
<unRs#[email protected]>
<[email protected]>
<#[email protected]>
<[email protected]>
<#[email protected]>
<[email protected]>
<[email protected]>
<[email protected]>
| Subject: Re: explanation of when need to repopulate control
| Date: Tue, 23 Aug 2005 14:42:45 -0700
| Lines: 379
| Message-ID: <[email protected]>
| MIME-Version: 1.0
| Content-Type: text/plain;
| charset="Utf-8"
| Content-Transfer-Encoding: 7bit
| X-Newsreader: Microsoft CDO for Windows 2000
| Content-Class: urn:content-classes:message
| Importance: normal
| Priority: normal
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.0
| Newsgroups: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| NNTP-Posting-Host: TK2MSFTNGXA03.phx.gbl 10.40.2.250
| Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGXA03.phx.gbl
| Xref: TK2MSFTNGXA01.phx.gbl
microsoft.public.dotnet.framework.aspnet.buildingcontrols:4097
| X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.buildingcontrols
|
| Same subject different control:
|
| I have a control that is inheriting from listbox. I also declare a
| dropdownlist and populate both of them when overriding onInit. I can't
get
| the postback values to get reset up after postback (there are other
controls
| on the page that intiate a postback that doesn't effect this control, but
| this control still needs to keep its state)
|
| using System;
| using System.Collections;
| using System.Collections.Specialized;
| using System.Web;
| using System.Web.UI;
| using System.Web.UI.WebControls;
| using System.Text;
| using TEA.CIS.BusinessObjects;
|
| using TEA.Teams.Reporting;
| using TEA.Teams.Reporting.WebControls;
| namespace TEA.CIS.Web
| {
| /// <summary>
| /// Summary description for GradeLevel.
| /// </summary>
| public class GradeLevel : ListBox, INamingContainer
| {
| private DropDownList ddlGradeLevel = new DropDownList();
|
| public GradeLevel()
| {
| }
|
| protected override void OnInit(EventArgs e)
| {
| base.OnInit (e);
|
| // Load in onInit so that its state can be reset after this event
(before
| page_Load)
| CodeCache.PopulateListWithCodes(this, CodeCacheTable.GradeLevelCodes);
| this.Items.Insert(0, new ListItem("ALL", string.Empty));
| this.SelectedIndex = 0;
|
| foreach(ListItem item in this.Items)
| ddlGradeLevel.Items.Add(item);
|
| ddlGradeLevel.SelectedIndex = 0;
|
| // ViewState["ddl"] = ddlGradeLevel.Items;
| }
|
|
| /// <summary>
| /// Overide Render Control to display listbox or dropdownlist.
| /// </summary>
| /// <param name="writer"></param>
| protected override void Render(HtmlTextWriter writer)
| {
| writer.Write("<table cellspacing=\"0\" cellpadding=\"2\"
width=\"100%\">");
| writer.Write("<tr><td class=\"reportCriteria\" align=right>Grade
| Level:</td><td width=\"100%\" class=\"reportCriteria\">");
|
| if (this.SelectionMode == ListSelectionMode.Multiple)
| {
| base.Render (writer);
| }
| else
| {
| ddlGradeLevel.RenderControl(writer);
| }
|
| writer.Write("</td></tr></table>");
| }
| }
| }
|
|
|
| "Steven Cheng[MSFT]" wrote:
|
| > You're welcome TS.
| >
| > Glad that you've overcome the problem.
| >
| > Regards,
| >
| > Steven Cheng
| > Microsoft Online Support
| >
| > Get Secure! www.microsoft.com/security
| > (This posting is provided "AS IS", with no warranties, and confers no
| > rights.)
| > --------------------
| > | From: "TS" <[email protected]>
| > | References: <[email protected]>
| > <[email protected]>
| > <[email protected]>
| > <[email protected]>
| > <unRs#[email protected]>
| > <[email protected]>
| > <#[email protected]>
| > <[email protected]>
| > <#[email protected]>
| > <[email protected]>
| > | Subject: Re: explanation of when need to repopulate control
| > | Date: Mon, 8 Aug 2005 12:50:32 -0500
| > | Lines: 1445
| > | X-Priority: 3
| > | X-MSMail-Priority: Normal
| > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > | Message-ID: <[email protected]>
| > | Newsgroups: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > | Path: TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP10.phx.gbl
| > | Xref: TK2MSFTNGXA01.phx.gbl
| > microsoft.public.dotnet.framework.aspnet.buildingcontrols:4014
| > | X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > |
| > | Well you were right that it had something to do with the custom
control.
| > The
| > | datalist was trying to load itself during page load. i put the code
in
| > Init,
| > | and it worked.
| > |
| > | thanks steven
| > |
| > | | > | > Thanks for your followup TS.
| > | >
| > | > So can I say that currently your custom webcontrol(not template list
| > | > control) can correctly be added both statically and dynamically in
the
| > | > normal DataList or Repeater controls (asp.net buildin ) , but have
some
| > | > problem for postback events when added in your custom list control?
| > | >
| > | > If so, we should keep focus on the custom datalist control. Has it
any
| > | > problems when we nest some asp.net buildin controls in it? Would
you try
| > | > making a simplified version of your custom datalist control so that
we
| > can
| > | > have a view to see whether there is anything wrong in it. Also,
it'll be
| > | > helpful you also provide the complete code that you dynamically add
| > | control
| > | > into the datalist (through reflection).
| > | >
| > | > Thanks,
| > | >
| > | > Steven Cheng
| > | > Microsoft Online Support
| > | >
| > | > Get Secure! www.microsoft.com/security
| > | > (This posting is provided "AS IS", with no warranties, and confers
no
| > | > rights.)
| > | >
| > | > --------------------
| > | > | From: "TS" <[email protected]>
| > | > | References: <[email protected]>
| > | > <[email protected]>
| > | > <[email protected]>
| > | > <[email protected]>
| > | > <unRs#[email protected]>
| > | > <[email protected]>
| > | > <#[email protected]>
| > | > <[email protected]>
| > | > | Subject: Re: explanation of when need to repopulate control
| > | > | Date: Fri, 5 Aug 2005 17:19:23 -0500
| > | > | Lines: 1298
| > | > | X-Priority: 3
| > | > | X-MSMail-Priority: Normal
| > | > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > | > | Message-ID: <#[email protected]>
| > | > | Newsgroups:
microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > | > | Path:
TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP15.phx.gbl
| > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols:4003
| > | > | X-Tomcat-NG:
microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | > |
| > | > | I have a new problem now. I have figured out that the cause is
the
| > same
| > | > | reason. If its in the custom DataList, it doesn't work, else it
does
| > | work.
| > | > |
| > | > | The scenario:
| > | > | After the initial page load, you enter data into controls and hit
| > submit
| > | > | button, the process is as follows:
| > | > | Page_Load
| > | > | DataList's OnLoad
| > | > | Composite Control's OnLoad
| > | > | Submit button's OnClick - At this point, the controls in the
composite
| > | > | control have no listitems and no selectedValue properties.
| > | > |
| > | > | I have statically added the composite control onto the same page
as
| > the
| > | > | dynamic one, so here is the process in this scenario:
| > | > | Page_Load
| > | > | Composite Control's OnLoad (The one whose parent is Page)
| > | > | DataList's OnLoad
| > | > | Composite Control's OnLoad (The one whose parent is the Custom
| > DataList)
| > | > | Submit button's OnClick - At this point, the controls in the
| > statically
| > | > | declared composite control have listitems and have values for
| > | > selectedValue
| > | > | properties.
| > | > |
| > | > | So the same control at the same time - the one outside the custom
| > | Datalist
| > | > | has its controls' state set up correctly, the ones inside does
not.
| > | > |
| > | > | So the same reason is at play here. Maybe since i am dynamically
| > | creating
| > | > | the class using reflection (Assembly.CreateInstance()) that has
| > | something
| > | > to
| > | > | do with it?
| > | > |
| > | > | Please help mr. Cheng.
| > | > |
| > | > | Thank you very much!
| > | > |
| > | > | TS
| > | > |
| > | > |
| > | > |
message
| > | > | | > | > | > Hi TS,
| > | > | >
| > | > | > First, I'm glad that you've got your composite control work,
all the
| > | > | > dropdownlist's postback events can fire correctly,yes?
| > | > | >
| > | > | > As for the new problem you encountered when adding your
composite
| > | > control
| > | > | > into DataList's item, is the DataList the asp.net's buildin
DataList
| > | > | > control? And since you mentioned that you dynamically add your
| > | control
| > | > | > into it, how do you dynamically add your custom control? Will
there
| > | > occur
| > | > | > problem if you statically add your control into DataList?
| > | > | >
| > | > | > Thanks,
| > | > | >
| > | > | > Steven Cheng
| > | > | > Microsoft Online Support
| > | > | >
| > | > | > Get Secure! www.microsoft.com/security
| > | > | > (This posting is provided "AS IS", with no warranties, and
confers
| > no
| > | > | > rights.)
| > | > | >
| > | > | > --------------------
| > | > | > | From: "TS" <[email protected]>
| > | > | > | References: <[email protected]>
| > | > | > <[email protected]>
| > | > | > <[email protected]>
| > | > | > <[email protected]>
| > | > | > <unRs#[email protected]>
| > | > | > <[email protected]>
| > | > | > | Subject: Re: explanation of when need to repopulate control
| > | > | > | Date: Wed, 3 Aug 2005 19:07:16 -0500
| > | > | > | Lines: 1153
| > | > | > | X-Priority: 3
| > | > | > | X-MSMail-Priority: Normal
| > | > | > | X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
| > | > | > | X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
| > | > | > | Message-ID: <#[email protected]>
| > | > | > | Newsgroups:
| > | microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | > | > | NNTP-Posting-Host: 103nat100.tea.state.tx.us 198.214.103.100
| > | > | > | Path:
| > | TK2MSFTNGXA01.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP14.phx.gbl
| > | > | > | Xref: TK2MSFTNGXA01.phx.gbl
| > | > | > microsoft.public.dotnet.framework.aspnet.buildingcontrols:3989
| > | > | > | X-Tomcat-NG:
| > | microsoft.public.dotnet.framework.aspnet.buildingcontrols
| > | > | > |
| > | > | > | Well Steve, I am almost done. My control works well, except
its
| > not
| > | in
| > | > | the
| > | > | > | framework i just mentioned. Adding my control dynamically to
the
| > | > | > datalist's
| > | > | > | item may be the root of the cause. i've made sure all custom
| > | controls
| > | > | > | implmenet INamingContainer & I think all controls have their
id's
| > | set,
| > | > | so
| > | > | > | what else can i do?
| > | > | > |
| > | > | > | thanks a bunch
| > | > | > |
| > | > | > | | > | > | > | > I have figured the cause of the problem, sort of. My main
| > control
| > | > was
| > | > | > | being
| > | > | > | > loaded dynamically during a custom data list control's
| > | ItemDataBound
| > | > | > | event,
| > | > | > | > and then added to the e.item.controls collection. Once I
removed
| > | it
| > | > | from
| > | > | > | > here, the correct event was called in my control. the
problem
| > is i
| > | > | need
| > | > | > to
| > | > | > | > keep it where it is because of the way the page works.
| > | > | > | >
| > | > | > | > I tried to add INamingContainer to the custom Datalist, but
that
| > | > | didn't
| > | > | > | > help. Any ideas what could make this happen?
| > | > | > | >
| > | > | > | > thanks so much, i know i'm being a pain, but i'm stuck!
| > | > | > | >
| > | > | > | > This is the custom DataLists' event:
| > | > | > | > protected override void
OnItemDataBound(DataListItemEventArgs e)
| > | > | > | >
| > | > | > | > {
| > | > | > | >
| > | > | > | > base.OnItemDataBound(e);
| > | > | > | >
| > | > | > | > Parameter parameter = (Parameter)e.Item.DataItem;
| > | > | > | >
| > | > | > | > try
| > | > | > | >
| > | > | > | > {
| > | > | > | >
| > | > | > | > Control control;
| > | > | > | >
| > | > | > | > if(parameter.Type == ParameterType.Control)
| > | > | > | >
| > | > | > | > control = this.Page.LoadControl(parameter.ControlPath);
| > | > | > | >
| > | > | > | > else
| > | > | > | >
| > | > | > | > {
| > | > | > | >
| > | > | > | > Assembly assembly = parameter.Assembly;
| > | > | > | >
| > | > | > | > if(assembly == null)
| > | > | > | >
| > | > | > | > {
| > | > | > | >
| > | > | > | > // The control didn't declare its own assembly, so use the
| > | report's
| > | > | > | > ControlsAssembly
| > | > | > | >
| > | > | > | > assembly = this.ControlsAssembly;
| > | > | > | >
| > | > | > | > // Ther report's ControlsAssembly is null, so use current
page's
| > | > | > assembly
| > | > | > | >
| > | > | > | > if(assembly == null)
| > | > | > | >
| > | > | > | > assembly = this.Page.GetType().BaseType.Assembly;
| > | > | > | >
| > | > | > | > }
| > | > | > | >
| > | > | > | >
| > | > | > | > control = (Control)
| > | > | assembly.CreateInstance(parameter.ControlTypeName);
| > | > | > | >
| > | > | > | > }
| > | > | > | >
| > | > | > | > control.ID = parameter.Name;
| > | > | > | >
| > | > | > | > // Set up all the properties of this control from the
| > | > | > parameter.properties
| > | > | > | >
| > | > | > | > foreach(DictionaryEntry de in parameter.Properties)
| > | > | > | >
| > | > | > | > SetProperty(de.Key.ToString(), de.Value.ToString(),
control);
| > | > | > | >
| > | > | > | >
| > | > | > | > e.Item.Controls.Add(control);
| > | > | > | >
|
 

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

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top