User Control to Control Other User Control

Discussion in 'ASP .Net' started by Jonathan Wood, Jan 24, 2010.

  1. Has anyone here created a control that controlled the content of other
    controls?

    I have my own custom ad control (for displaying space ads). I may have
    several on a page. What I'd like it to create another control that could
    determine how many instances of the first control existed on the current
    page, build a list of ads, and then set each control to show a particular
    ad.

    Is this practical? Suggestions?

    Thanks.

    Jonathan
    Jonathan Wood, Jan 24, 2010
    #1
    1. Advertising

  2. "Jonathan Wood" <> wrote in message
    news:...
    > Has anyone here created a control that controlled the content of other
    > controls?
    >
    > I have my own custom ad control (for displaying space ads). I may have
    > several on a page. What I'd like it to create another control that could
    > determine how many instances of the first control existed on the current
    > page, build a list of ads, and then set each control to show a particular
    > ad.


    Step back from the problem for a second. Here is what it sounds like you are
    saying.

    1. I have randomly created ads, so I have no clue how many are on a page
    2. I want a control to find these random controls and then make a list of
    their ads
    3. I then want this control to fill these ads

    Now, unless you are refilling controls on the client side, you will know
    what is in the controls. If so, you might create some JavaScript to flip
    them out, but you should still output (emit) this client script from the
    server, where you still have control.

    As such, I see no reason to have a control to monitor other controls.
    Instead, I see a control you send a full list to as you fill the individual
    controls. Perhaps you also have some emited script to change the ads and
    update the controller control. But since this is merely JavaScript, I see no
    reason to have a "control" per se. Make sense?

    --
    Peace and Grace,
    Greg

    Twitter: @gbworld
    Blog: http://gregorybeamer.spaces.live.com

    ************************************************
    | Think outside the box! |
    ************************************************
    Gregory A. Beamer, Jan 24, 2010
    #2
    1. Advertising

  3. Gregory A. Beamer wrote:

    > Step back from the problem for a second. Here is what it sounds like you
    > are saying.
    >
    > 1. I have randomly created ads, so I have no clue how many are on a page
    > 2. I want a control to find these random controls and then make a list of
    > their ads
    > 3. I then want this control to fill these ads


    1. I know how many ads are on a page; however, control instances do not know
    how many other instances there are.
    2+3. Something like that.

    > As such, I see no reason to have a control to monitor other controls.
    > Instead, I see a control you send a full list to as you fill the
    > individual controls.


    I'm not sure how that would work. Just to clarify, I don't know if I used
    the term "a control to monitor other controls" but all I really mean is a
    separate control to coordinate things. Exactly how that is accomplished is
    what I'm asking.

    > Perhaps you also have some emited script to change the ads and update the
    > controller control. But since this is merely JavaScript, I see no reason
    > to have a "control" per se. Make sense?


    The ads are coming from my database so really there's no no client-script
    involved.

    For me the, issues are A) I suspect it is less efficient to have multiple
    controls hit the database than to hit the database once for all controls on
    a page, and B) when separate controls hit the database separately, I can get
    duplicate ads on different controls.

    Thanks.

    Jonathan
    Jonathan Wood, Jan 25, 2010
    #3
  4. "Jonathan Wood" <> wrote in message
    news:...
    > Gregory A. Beamer wrote:
    >
    >> Step back from the problem for a second. Here is what it sounds like you
    >> are saying.
    >>
    >> 1. I have randomly created ads, so I have no clue how many are on a page
    >> 2. I want a control to find these random controls and then make a list of
    >> their ads
    >> 3. I then want this control to fill these ads

    >
    > 1. I know how many ads are on a page; however, control instances do not
    > know how many other instances there are.
    > 2+3. Something like that.
    >
    >> As such, I see no reason to have a control to monitor other controls.
    >> Instead, I see a control you send a full list to as you fill the
    >> individual controls.

    >
    > I'm not sure how that would work. Just to clarify, I don't know if I used
    > the term "a control to monitor other controls" but all I really mean is a
    > separate control to coordinate things. Exactly how that is accomplished is
    > what I'm asking.
    >
    >> Perhaps you also have some emited script to change the ads and update the
    >> controller control. But since this is merely JavaScript, I see no reason
    >> to have a "control" per se. Make sense?

    >
    > The ads are coming from my database so really there's no no client-script
    > involved.
    >
    > For me the, issues are A) I suspect it is less efficient to have multiple
    > controls hit the database than to hit the database once for all controls
    > on a page, and B) when separate controls hit the database separately, I
    > can get duplicate ads on different controls.


    Since everything is coming from the database, grab the list of ads and make
    sure they are filtered to the number you want on the page. Then dynamically
    instantiate the proper number of controls.

    If this does not work, I would suggest iterating through the controls and
    finding all ad controls. If you truly have an "ad" control, it will be easy.
    If it is merely an image link type of object, you will need naming
    convention on top to ensure you only grab ad images. If you want a count
    before grabbing ads, you can either

    a) iterate back through when you are adding ads (since the number is low,
    iterating is fine)
    b) store in a collection and then iterate through the collection (this is
    only a benefit if the number of ads on a single page is ridiculous or there
    are huge numbers of images, as the cost of instantiating the collection will
    be heavier than iteration through images again). It is conceptually cleaner,
    however, to go through only once, so it is not a bad pattern, but understand
    you may negatively impact performance (in the milliseconds range) for the
    added "beauty" in the code.

    Once you know your objects and ads, just start feeding. If you are using
    postbacks, you can update on a postback. If you want to use AJAX to reset
    the list, you can do that as well, although you have to think through the
    problem a bit more.

    If you need to rotate the ads, set up the JavaScript to swap out images and
    HREFS from a list or lists before sending to the client. This is a bit more
    complex, but there are libraries out there that can help you if you google
    for JavaScript image libraries. I tend to look at JQuery first, but I am not
    sure if it has any functionality for anything like this. My reason is
    twofold:

    1. I use it a lot and it has a lot of bang for the buck
    2. Microsoft is putting full support for JQuery in the 4.0 timeframe.

    --
    Peace and Grace,
    Greg

    Twitter: @gbworld
    Blog: http://gregorybeamer.spaces.live.com

    ************************************************
    | Think outside the box! |
    ************************************************
    Gregory A. Beamer, Feb 1, 2010
    #4
  5. Gregory A. Beamer wrote:

    > Since everything is coming from the database, grab the list of ads and
    > make sure they are filtered to the number you want on the page. Then
    > dynamically instantiate the proper number of controls.


    The number of controls is fixed.

    > If this does not work, I would suggest iterating through the controls and
    > finding all ad controls. If you truly have an "ad" control, it will be
    > easy.


    Right, this is where I've been looking. (I do truly have an "ad" control.)

    I guess I was wondering if this was the most efficient way to locate the
    other controls. So I was thinking about maybe adding a property that
    contains a list of the other control IDs. But perhaps I should do as you
    suggest and not worry about performance.

    > b) store in a collection and then iterate through the collection (this is
    > only a benefit if the number of ads on a single page is ridiculous or
    > there are huge numbers of images, as the cost of instantiating the
    > collection will be heavier than iteration through images again). It is
    > conceptually cleaner, however, to go through only once, so it is not a bad
    > pattern, but understand you may negatively impact performance (in the
    > milliseconds range) for the added "beauty" in the code.


    Okay, I would've thought it would've been faster to create a collection that
    scanning the page for controls multiple times. That's helpful if I was
    backwards on that. Perhaps I should even do a bit of profiling of this.

    > If you need to rotate the ads, set up the JavaScript to swap out images
    > and HREFS from a list or lists before sending to the client. This is a bit
    > more complex, but there are libraries out there that can help you if you
    > google for JavaScript image libraries.


    I'm not certain what sort of rotating you had in mind. I'm pulling the ads
    from a database in a somewhat random fashion. If the page reloads, I would
    just do it again. I guess I could look at just having the "ad" controls keep
    their ad markup in viewstate and then not access the database again for
    postbacks.

    > I tend to look at JQuery first, but I am not sure if it has any
    > functionality for anything like this. My reason is twofold:
    >
    > 1. I use it a lot and it has a lot of bang for the buck
    > 2. Microsoft is putting full support for JQuery in the 4.0 timeframe.


    I haven't looked into that. Is that in the current VS 2010 beta?

    Thanks.

    Jonathan
    Jonathan Wood, Feb 2, 2010
    #5
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    0
    Views:
    486
  2. Chris Dollin
    Replies:
    8
    Views:
    350
    Eric Sosman
    Feb 8, 2007
  3. =?Utf-8?B?QmVuamFtaW4gSmFuZWNrZQ==?=

    User attached to other user's session

    =?Utf-8?B?QmVuamFtaW4gSmFuZWNrZQ==?=, Mar 19, 2007, in forum: ASP .Net
    Replies:
    15
    Views:
    641
    =?Utf-8?B?QmVuamFtaW4gSmFuZWNrZQ==?=
    Mar 19, 2007
  4. Chris Zopers

    Access user control from other user control

    Chris Zopers, Feb 20, 2008, in forum: ASP .Net
    Replies:
    3
    Views:
    570
    Nanda Lella[MSFT]
    Apr 27, 2009
  5. Diego
    Replies:
    2
    Views:
    146
    Stefan Rusterholz
    Aug 16, 2008
Loading...

Share This Page