Guru's challenge: How to place multiple instance of a control on a page with abnormal capabilities

Discussion in 'ASP .Net Web Controls' started by .Net Newbie, Jul 29, 2004.

  1. .Net Newbie

    .Net Newbie Guest

    I am relatively new to .Net and have been coding an intranet site for my
    employer for a couple of months. I am currently stuck coding in a
    text-editor called EditPlus without access to the VS.Net IDE, and coding
    pages with the script directly in each page (not using the codebehind
    method) as most of my learning material has demonstrated. I started with
    the IBuySpy Portal (SDK version not VS Version) as my base portal and have
    coded custom controls and pages within the portal.

    My employer recently requested that I change one of my pages so that at a
    click of a button a section of code, including roughly 23 asp WebServer
    Controls, can be repeated so that the user can enter multiple sets of the
    same information into one SQL Server table when they save the information on
    the page (along with the main information in another table). I had already
    designed the tables with this in mind, however I am having some problems
    with getting the .Net code to function correctly. The way the original page
    was designed was that when a user clicked on one of three different buttons
    in this section in question the cooresponding popup window was called which
    loaded a lookup(aspx) page. When the user clicked on a hyperlink in the
    lookup page the 23 controls on the main page were populated from SQL Server
    tables (via JavaScript) and the popup window closed. Although I'm sure
    there's a better way to do it, I used JavaScript to pass the variables back
    to the main window because I knew how to do it. Since the change request
    came in have I moved this section of 23 controls into an ascx file, removed
    the popup windows(lookups), and am able to call it with the click of a
    button. Into a table column formatted as follows: <td id="ContentPane"
    colspan="2" runat="server"></td>

    Unfortunately, my method has left me no way to reference the controls or get
    the popup windows to function correctly. Each one of the newly displayed
    controls have names like _ctl1:phone, _ctl2:phone, _ctl3:phone, etc for each
    time I add the control. Furthermore I am not able to retain information in
    a given control instance. The way I currently have the code designed is
    that a counter increments everytime the "Add" button is pressed. This
    determines the number of times to add the control by looping through the
    following code:

    Control parent = Page.FindControl("ContentPane");
    PortalModuleControl portalModule = (PortalModuleControl)
    Page.LoadControl("Children.ascx");
    parent.Controls.Add(portalModule);

    Everything I have read indicates that I need to have this control inside
    some container such as a datagrid or datalist in order to reference it
    correctly. However all of my efforts have met with failure. The biggest
    problem I have is that I don't even know if what I am trying to do can be
    done much less how to do it. If anyone has any idea how I can get this
    functioning correctly and/or how I can reference each new control instance,
    while limited by my current coding environment
    please, please, please, let me know.

    Thanks in advance,

    Jeff
     
    .Net Newbie, Jul 29, 2004
    #1
    1. Advertising

  2. Jeff,
    First of all, you are severely limiting yourself by not using the VS.NET
    IDE. I realize that money is an issue, but just know that your employer is
    holding you back when this project could take half the time to do if you had
    the proper tools. With that being said, I respect you for doing whatever it
    takes to learn .NET and use it for something useful.

    I assume that you are dynamically loading these controls at runtime and that
    at design time you don't know how many instances of this control will be on
    the page. The first thing that comes to mind is to make an asp:Table with a
    dynamic number of <asp:TableRow/>, and each TableRow would have your editing
    controls. Then when you need access to all the controls, you can:
    <code>
    foreach(TableRow row in myTable.Rows){
    TextBox txt = (TextBox)row.FindControl("myInputControl");
    //save off txt.Text
    txt = (TextBox)row.FindControl("mySecondInputControlInTheSameRow");
    //save off txt.Text
    }
    </code>
    and you will be able to find and use every control, but remember this when
    using dynamic controls: The code to recreate the controls must run at the
    same time on the first load as in the post back. If you are creating the
    controls in Page_Load, you should be fine, but on PostBack, you have to
    recreate the same number of controls in the same place so that the posted
    data can be filled into these dynamic controls. Then after all the controls
    are there again, you can loop through and get their values.

    Best regards,
    Jeffrey Palermo
    ".Net Newbie" <> wrote in message
    news:%...
    > I am relatively new to .Net and have been coding an intranet site for my
    > employer for a couple of months. I am currently stuck coding in a
    > text-editor called EditPlus without access to the VS.Net IDE, and coding
    > pages with the script directly in each page (not using the codebehind
    > method) as most of my learning material has demonstrated. I started with
    > the IBuySpy Portal (SDK version not VS Version) as my base portal and have
    > coded custom controls and pages within the portal.
    >
    > My employer recently requested that I change one of my pages so that at a
    > click of a button a section of code, including roughly 23 asp WebServer
    > Controls, can be repeated so that the user can enter multiple sets of the
    > same information into one SQL Server table when they save the information

    on
    > the page (along with the main information in another table). I had

    already
    > designed the tables with this in mind, however I am having some problems
    > with getting the .Net code to function correctly. The way the original

    page
    > was designed was that when a user clicked on one of three different

    buttons
    > in this section in question the cooresponding popup window was called

    which
    > loaded a lookup(aspx) page. When the user clicked on a hyperlink in the
    > lookup page the 23 controls on the main page were populated from SQL

    Server
    > tables (via JavaScript) and the popup window closed. Although I'm sure
    > there's a better way to do it, I used JavaScript to pass the variables

    back
    > to the main window because I knew how to do it. Since the change request
    > came in have I moved this section of 23 controls into an ascx file,

    removed
    > the popup windows(lookups), and am able to call it with the click of a
    > button. Into a table column formatted as follows: <td id="ContentPane"
    > colspan="2" runat="server"></td>
    >
    > Unfortunately, my method has left me no way to reference the controls or

    get
    > the popup windows to function correctly. Each one of the newly displayed
    > controls have names like _ctl1:phone, _ctl2:phone, _ctl3:phone, etc for

    each
    > time I add the control. Furthermore I am not able to retain information

    in
    > a given control instance. The way I currently have the code designed is
    > that a counter increments everytime the "Add" button is pressed. This
    > determines the number of times to add the control by looping through the
    > following code:
    >
    > Control parent = Page.FindControl("ContentPane");
    > PortalModuleControl portalModule = (PortalModuleControl)
    > Page.LoadControl("Children.ascx");
    > parent.Controls.Add(portalModule);
    >
    > Everything I have read indicates that I need to have this control inside
    > some container such as a datagrid or datalist in order to reference it
    > correctly. However all of my efforts have met with failure. The biggest
    > problem I have is that I don't even know if what I am trying to do can be
    > done much less how to do it. If anyone has any idea how I can get this
    > functioning correctly and/or how I can reference each new control

    instance,
    > while limited by my current coding environment
    > please, please, please, let me know.
    >
    > Thanks in advance,
    >
    > Jeff
    >
    >
     
    Jeffrey Palermo [MCP], Jul 31, 2004
    #2
    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. .Net Newbie
    Replies:
    0
    Views:
    468
    .Net Newbie
    Jul 29, 2004
  2. Scott M.

    REPOST: Guru Challenge

    Scott M., Oct 5, 2005, in forum: ASP .Net
    Replies:
    67
    Views:
    1,588
    Scott M.
    Oct 12, 2005
  3. eduardo almeida

    abnormal applet output

    eduardo almeida, Oct 4, 2003, in forum: Java
    Replies:
    2
    Views:
    360
    Tris Orendorff
    Oct 6, 2003
  4. R6_2003
    Replies:
    1
    Views:
    541
    Peter van Merkerk
    Oct 23, 2003
  5. .Net Newbie
    Replies:
    0
    Views:
    127
    .Net Newbie
    Jul 29, 2004
Loading...

Share This Page