window.top.location.href

Discussion in 'ASP General' started by Scott, Dec 22, 2003.

  1. Scott

    Scott Guest

    I'm new to ASP, but I've been programming in VB for
    several years, and I'm having a few issues with this ASP
    enhancement I'm working on. I've found ASP to be a lot
    different than what I'm use to in VB.

    I've created an ASP interface where a user can select an
    email group that populates a listbox with those email
    addresses. If a user sees an email in that list that they
    do not want then they can remove it by clinking the Delete
    button and conversely do the same for Adding emails. I'm
    trying to accomplish this by creating a popup window when
    a use clicks the "Add or Delete" button. In this popup
    ASP page the user can then Add or Delete additional email
    (s) addresses depending on the button they chose. After
    they have made their changes they can click the submit
    button to update the previous page.

    How do I get the ASP page to popup?
    Right now, when I use
    onclick="window.top.location.href='Add_Emails.asp'" my ASP
    page loads itself in the current browser window instead of
    it's own.

    How do I get the data from the popup ASP page to post the
    changes in my listbox on the previous ASP page?
    For example, the email group I chose has John, Betty, and
    Joe, but I want Maggie added to the list. In theory my
    new list should show John, Betty, Joe, and Maggie.
    Scott, Dec 22, 2003
    #1
    1. Advertising

  2. Scott

    Foo Man Chew Guest

    > How do I get the ASP page to popup?

    Look at window.open() ... please see a JavaScript newsgroup.

    > How do I get the data from the popup ASP page to post the
    > changes in my listbox on the previous ASP page?


    You'll have to say
    window.opener.location.href='somepage.asp?add=&delete=bob@franks
    ..com';

    Then rebuild the SELECT box based on request.querystring accordingly.
    Foo Man Chew, Dec 22, 2003
    #2
    1. Advertising

  3. Scott

    Roland Hall Guest

    "Scott" wrote:
    > I'm new to ASP, but I've been programming in VB for
    > several years, and I'm having a few issues with this ASP
    > enhancement I'm working on. I've found ASP to be a lot
    > different than what I'm use to in VB.
    >
    > I've created an ASP interface where a user can select an
    > email group that populates a listbox with those email
    > addresses. If a user sees an email in that list that they
    > do not want then they can remove it by clinking the Delete
    > button and conversely do the same for Adding emails. I'm
    > trying to accomplish this by creating a popup window when
    > a use clicks the "Add or Delete" button. In this popup
    > ASP page the user can then Add or Delete additional email
    > (s) addresses depending on the button they chose. After
    > they have made their changes they can click the submit
    > button to update the previous page.
    >
    > How do I get the ASP page to popup?
    > Right now, when I use
    > onclick="window.top.location.href='Add_Emails.asp'" my ASP
    > page loads itself in the current browser window instead of
    > it's own.
    >
    > How do I get the data from the popup ASP page to post the
    > changes in my listbox on the previous ASP page?
    > For example, the email group I chose has John, Betty, and
    > Joe, but I want Maggie added to the list. In theory my
    > new list should show John, Betty, Joe, and Maggie.


    Where are the email addresses stored now? Are they in a database or in a
    document or hard coded into the page?

    --
    Roland

    This information is distributed in the hope that it will be useful, but
    without any warranty; without even the implied warranty of merchantability
    or fitness for a particular purpose.
    Roland Hall, Dec 23, 2003
    #3
  4. Scott

    Scott Guest

    They are stored in a SQL Database.

    I make a call out to a Stored Procedure that returns the
    entire list of emails base on the group selected from a
    dropdown box, and then populates the listbox with all the
    email addresses. There is nothing hard-code in the
    WebPages I'm doing.

    If this helps, I using a standard button instead of a
    submit button, when adding or deleting emails from the
    listbox. When the new ASP page is launched after clicking
    one of these two buttons, it has just a textbox and a
    SUBMIT button on it.

    My intention is to use this same ASP page for both adding
    and deleting emails from the listbox, unless someone has a
    better suggestion. As I stated before, I've done more VB
    programming than ASP programming, and I'd rather tag the
    emails and click delete to remove them than to bring up an
    ASP page to do it, but I not sure how to do it in ASP.
    Adding emails this way is fine.



    >-----Original Message-----
    >"Scott" wrote:
    >> I'm new to ASP, but I've been programming in VB for
    >> several years, and I'm having a few issues with this ASP
    >> enhancement I'm working on. I've found ASP to be a lot
    >> different than what I'm use to in VB.
    >>
    >> I've created an ASP interface where a user can select an
    >> email group that populates a listbox with those email
    >> addresses. If a user sees an email in that list that

    they
    >> do not want then they can remove it by clinking the

    Delete
    >> button and conversely do the same for Adding emails.

    I'm
    >> trying to accomplish this by creating a popup window

    when
    >> a use clicks the "Add or Delete" button. In this popup
    >> ASP page the user can then Add or Delete additional

    email
    >> (s) addresses depending on the button they chose. After
    >> they have made their changes they can click the submit
    >> button to update the previous page.
    >>
    >> How do I get the ASP page to popup?
    >> Right now, when I use
    >> onclick="window.top.location.href='Add_Emails.asp'" my

    ASP
    >> page loads itself in the current browser window instead

    of
    >> it's own.
    >>
    >> How do I get the data from the popup ASP page to post

    the
    >> changes in my listbox on the previous ASP page?
    >> For example, the email group I chose has John, Betty,

    and
    >> Joe, but I want Maggie added to the list. In theory my
    >> new list should show John, Betty, Joe, and Maggie.

    >
    >Where are the email addresses stored now? Are they in a

    database or in a
    >document or hard coded into the page?
    >
    >--
    >Roland
    >
    >This information is distributed in the hope that it will

    be useful, but
    >without any warranty; without even the implied warranty

    of merchantability
    >or fitness for a particular purpose.
    >
    >
    >.
    >
    Scott, Dec 23, 2003
    #4
  5. Scott

    Roland Hall Guest

    "Scott" wrote:
    > If this helps, I using a standard button instead of a
    > submit button, when adding or deleting emails from the
    > listbox. When the new ASP page is launched after clicking
    > one of these two buttons, it has just a textbox and a
    > SUBMIT button on it.

    If it only has a text box and submit, how do you identify the person to
    delete?

    > My intention is to use this same ASP page for both adding
    > and deleting emails from the listbox, unless someone has a
    > better suggestion.


    Using two pages is probably easier but using one means you need to determine
    if your method is POST or GET and then you check for input to the page
    before you build the page.

    > As I stated before, I've done more VB
    > programming than ASP programming,


    It was weird for me when I started using ASP. VB.NET would be easier for
    you. The best advice I think anyone can give you re: ASP in the beginning
    is that ASP processes ONLY ASP code and passes everything else to the
    client, including processed results. When you surf to an ASP page and view
    the source, you're seeing the results and the ASP engine is done.

    > and I'd rather tag the
    > emails and click delete to remove them than to bring up an
    > ASP page to do it,

    You could do it that way too. Do you want to delete one at a time or
    multiple? When do you want to update the database?

    > but I not sure how to do it in ASP.
    > Adding emails this way is fine.

    Yes, adding is always easier.

    What I get from your posts is: (I will number these and reference them by
    number in my response)
    1. You have a list box where you select a group. You do not mention a
    submit key so I assume this is an onChange event. Doesn't matter either
    way.
    2. This makes a call to a SP which dynamically builds another list box with
    the email addresses of the group selected from the other list box.
    3. One of two buttons is then clicked [add/delete] and a popup window which
    contains a text box and a submit button is used to add/delete email
    addresses for this particular group only.
    4. The 'opener' window should reflect, assumingly the email address list,
    the result of an additional email address or the elimination of one.

    1. Since you are going to definitely add/delete records, I would populate
    the groups and addresses into arrays when the page loads. This is one trip
    to the server and I don't have to call it in the middle of my process,
    however, one might argue it would be unnecessary if the task was aborted
    before changes were made. Of course if you had 100 groups and 1000 users
    per group, I'd probably rethink this. When the appropriate group was
    selected, I would populate the email address list box with the appropriate
    values from the array. This is faster than a trip to the server.

    2. Here is where I differ on the add/delete processes being the same.
    Unless you need to get a list, which is why I would populate upon entry to
    the page, I would not select a group and then get a list and then click to
    add an address. I would show a list and then you click add and on the add,
    select the group and add the email address in one step, submit and update
    the opener window, however, I think it would be better in a frame.

    3. I think to delete an email address, you don't need to popup a window
    except to confirm a deletion. Once you confirm, then you make a trip to the
    server and update the database. If posting to the same page, then this
    would be handled upon entry. You would pass the information either in the
    header [method=post] or on the URL [method=get], it really doesn't matter.
    I also pass a flag which identifies the task, ex.
    /asp/somefile.asp?address=&task=delete.

    4. If you use a popup to add, then you assign that window a handle.
    Ex. var w=window.open('',"addEmail",features);

    Then you reference the handle to build the page. Loading a preset page is
    easier than building it on the fly but it is a trip to the drive. Probably
    not a deal killer considering the size. Now, you can either update the
    opener window and then close the popup but you still need to process the
    data and send it to the server. You could do that in the popup but why
    duplicate code for server access? I would call to process the opener window
    with the results and have it check as part of it's opening routine if the
    popup is open and close it, update the server and then rebuild the list. If
    you want to keep the group selected, then you need to pass another variable
    identifying the group.
    /asp/somefile.asp?group=corporate&address=&task=delete.

    As far as your popup not working, I have a simple popup routine I use.
    <!--
    // Options:
    // toolbar (yes,no)
    // location (yes,no)
    // directories (yes,no)
    // status (yes,no)
    // menubar (yes,no)
    // scrollbars (yes,no)
    // resizable (yes,no)
    // copyhistory (yes,no)
    // width=size
    // height=size
    var winHandle='';
    var winname='';
    function popup(url, winname) {
    var features = "menubar=no, width=200, height=200";
    w = window.open(url,winname,features);
    if(!w.opener) w.opener = self;
    // other code goes here
    }
    //-->

    If you want multiple windows from a single page that need different
    attributes, then I use:
    <!--
    // Author: Roland Hall
    // Copyright (c) 2003 - Dangerously, Inc.
    // Free for non-commercial use
    // All rights reserved world wide
    // Options:
    // toolbar (yes,no)
    // location (yes,no)
    // directories (yes,no)
    // status (yes,no)
    // menubar (yes,no)
    // scrollbars (yes,no)
    // resizable (yes,no)
    // copyhistory (yes,no)
    // width=size
    // height=size
    var features, w, h;
    function popupwin(url, winname, features, w, h) {
    // Use the line below during debugging
    //alert('url: ' + url + '\r\nwinname: ' + winname + '\r\nfeatures: ' +
    features + '\r\nw : ' + w + '\r\nh : ' + h);
    if(!w && !h) {
    w=600; // default width
    h=600; // default height
    }
    if(!features) {
    features = 'width=' + w + ', height=' + h;
    } else {
    features += ', width=' + w + ', height=' + h;
    }
    // Use the line below during debugging
    //alert('w = ' + w + '\nh = ' + h + '\nfeatures = ' + features);
    popwin = window.open(url,winname,features);
    }
    //-->

    --
    Roland

    This information is distributed in the hope that it will be useful, but
    without any warranty; without even the implied warranty of merchantability
    or fitness for a particular purpose.
    Roland Hall, Dec 24, 2003
    #5
  6. Scott

    Scott Guest

    Thanks Roland. I would have to say that you have all the
    details correct for the most part with some exceptions
    that I did not include in my previous post.

    1. On ASP load, I dynamically load a dropdown box with all
    Email groups. You are correct, I use the onChange event
    to dynamically load a listbox with the Email Addresses.
    If the user sees an email that they do or don't want then
    they can add/remove it by pressing the ADD or DELETE
    button.

    2. You are correct, both are built using SP's.

    3. You are correct. Here's what the code looks like.
    <TR>
    <TH align="middle" valign="top" nowrap>
    <INPUT type="button" value="Add" id=Add name=Add
    style="WIDTH: 50px; HEIGHT: 20px" onclick="window.open
    ('UpdateEmails.asp',null,'toolbar=0,scrollbars=0,
    resizable=1,
    location=0,height=100,width=440,menubar=0,left=300,top=250'
    )">
    </TH>
    </TR>
    <TR>
    <TH align="middle" valign="top" nowrap>
    <INPUT type="button" value="Delete" id=Delete name=Delete
    style="WIDTH: 50px; HEIGHT: 20px" onclick="window.open
    ('UpdateEmails.asp',null,'toolbar=0,scrollbars=0,
    resizable=1, location=0,
    height=100,width=440,menubar=0,left=300,top=250')">
    </TH>
    </TR>

    At the moment, to add an email address you would type it
    in and presses submit.

    The same thing is what I considered for the delete
    process, but I've been rethinking that. I would prefer to
    do tag each email using the CTLR key then press the delete
    key, but I'm not sure how to do that in ASP.

    4. I'm ONLY updating the LISTBOX with additions/deletions
    of emails. No DB updates are being done. There is a
    separate profile's ASP page for that already.

    5. Once all emails are selected the user can press the
    email button on the main WebPages. To me, it's a modified
    version of email software using the NotesMail object. I
    think it would have been easier to develop something in
    Lotus Notes rather than ASP, but I don't think anyone here
    knows how and they wanted it done this way.

    6. You had suggested using a frame instead of a popup.
    How do I do that? What are the advantages of a frame
    opposed to popping up a new ASP? Would you recommend
    having the frame open onload or when the user click
    add/delete, then close after their selections? I
    personally don't like popup, but there are some cases in
    which they are useful.


    >-----Original Message-----
    >"Scott" wrote:
    >> If this helps, I using a standard button instead of a
    >> submit button, when adding or deleting emails from the
    >> listbox. When the new ASP page is launched after

    clicking
    >> one of these two buttons, it has just a textbox and a
    >> SUBMIT button on it.

    >If it only has a text box and submit, how do you identify

    the person to
    >delete?
    >
    >> My intention is to use this same ASP page for both

    adding
    >> and deleting emails from the listbox, unless someone

    has a
    >> better suggestion.

    >
    >Using two pages is probably easier but using one means

    you need to determine
    >if your method is POST or GET and then you check for

    input to the page
    >before you build the page.
    >
    >> As I stated before, I've done more VB
    >> programming than ASP programming,

    >
    >It was weird for me when I started using ASP. VB.NET

    would be easier for
    >you. The best advice I think anyone can give you re: ASP

    in the beginning
    >is that ASP processes ONLY ASP code and passes everything

    else to the
    >client, including processed results. When you surf to an

    ASP page and view
    >the source, you're seeing the results and the ASP engine

    is done.
    >
    >> and I'd rather tag the
    >> emails and click delete to remove them than to bring up

    an
    >> ASP page to do it,

    >You could do it that way too. Do you want to delete one

    at a time or
    >multiple? When do you want to update the database?
    >
    >> but I not sure how to do it in ASP.
    >> Adding emails this way is fine.

    >Yes, adding is always easier.
    >
    >What I get from your posts is: (I will number these and

    reference them by
    >number in my response)
    >1. You have a list box where you select a group. You do

    not mention a
    >submit key so I assume this is an onChange event.

    Doesn't matter either
    >way.
    >2. This makes a call to a SP which dynamically builds

    another list box with
    >the email addresses of the group selected from the other

    list box.
    >3. One of two buttons is then clicked [add/delete] and a

    popup window which
    >contains a text box and a submit button is used to

    add/delete email
    >addresses for this particular group only.
    >4. The 'opener' window should reflect, assumingly the

    email address list,
    >the result of an additional email address or the

    elimination of one.
    >
    >1. Since you are going to definitely add/delete records,

    I would populate
    >the groups and addresses into arrays when the page

    loads. This is one trip
    >to the server and I don't have to call it in the middle

    of my process,
    >however, one might argue it would be unnecessary if the

    task was aborted
    >before changes were made. Of course if you had 100

    groups and 1000 users
    >per group, I'd probably rethink this. When the

    appropriate group was
    >selected, I would populate the email address list box

    with the appropriate
    >values from the array. This is faster than a trip to the

    server.
    >
    >2. Here is where I differ on the add/delete processes

    being the same.
    >Unless you need to get a list, which is why I would

    populate upon entry to
    >the page, I would not select a group and then get a list

    and then click to
    >add an address. I would show a list and then you click

    add and on the add,
    >select the group and add the email address in one step,

    submit and update
    >the opener window, however, I think it would be better in

    a frame.
    >
    >3. I think to delete an email address, you don't need to

    popup a window
    >except to confirm a deletion. Once you confirm, then you

    make a trip to the
    >server and update the database. If posting to the same

    page, then this
    >would be handled upon entry. You would pass the

    information either in the
    >header [method=post] or on the URL [method=get], it

    really doesn't matter.
    >I also pass a flag which identifies the task, ex.
    >/asp/somefile.asp?address=&task=delete.
    >
    >4. If you use a popup to add, then you assign that window

    a handle.
    >Ex. var w=window.open('',"addEmail",features);
    >
    >Then you reference the handle to build the page. Loading

    a preset page is
    >easier than building it on the fly but it is a trip to

    the drive. Probably
    >not a deal killer considering the size. Now, you can

    either update the
    >opener window and then close the popup but you still need

    to process the
    >data and send it to the server. You could do that in the

    popup but why
    >duplicate code for server access? I would call to

    process the opener window
    >with the results and have it check as part of it's

    opening routine if the
    >popup is open and close it, update the server and then

    rebuild the list. If
    >you want to keep the group selected, then you need to

    pass another variable
    >identifying the group.
    >/asp/somefile.asp?

    group=corporate&address=&task=delete.
    >
    >As far as your popup not working, I have a simple popup

    routine I use.
    ><!--
    >// Options:
    >// toolbar (yes,no)
    >// location (yes,no)
    >// directories (yes,no)
    >// status (yes,no)
    >// menubar (yes,no)
    >// scrollbars (yes,no)
    >// resizable (yes,no)
    >// copyhistory (yes,no)
    >// width=size
    >// height=size
    >var winHandle='';
    >var winname='';
    >function popup(url, winname) {
    >var features = "menubar=no, width=200, height=200";
    >w = window.open(url,winname,features);
    >if(!w.opener) w.opener = self;
    >// other code goes here
    >}
    >//-->
    >
    >If you want multiple windows from a single page that need

    different
    >attributes, then I use:
    ><!--
    >// Author: Roland Hall
    >// Copyright (c) 2003 - Dangerously, Inc.
    >// Free for non-commercial use
    >// All rights reserved world wide
    >// Options:
    >// toolbar (yes,no)
    >// location (yes,no)
    >// directories (yes,no)
    >// status (yes,no)
    >// menubar (yes,no)
    >// scrollbars (yes,no)
    >// resizable (yes,no)
    >// copyhistory (yes,no)
    >// width=size
    >// height=size
    >var features, w, h;
    >function popupwin(url, winname, features, w, h) {
    >// Use the line below during debugging
    >//alert('url: ' + url + '\r\nwinname: ' + winname

    + '\r\nfeatures: ' +
    >features + '\r\nw : ' + w + '\r\nh : ' + h);
    > if(!w && !h) {
    > w=600; // default width
    > h=600; // default height
    > }
    > if(!features) {
    > features = 'width=' + w + ', height=' + h;
    > } else {
    > features += ', width=' + w + ', height=' + h;
    > }
    >// Use the line below during debugging
    >//alert('w = ' + w + '\nh = ' + h + '\nfeatures = ' +

    features);
    > popwin = window.open(url,winname,features);
    >}
    >//-->
    >
    >--
    >Roland
    >
    >This information is distributed in the hope that it will

    be useful, but
    >without any warranty; without even the implied warranty

    of merchantability
    >or fitness for a particular purpose.
    >
    >
    >.
    >
    Scott, Dec 24, 2003
    #6
  7. Scott

    Roland Hall Guest

    "Scott" wrote:
    > Thanks Roland.

    You're welcome. (O:=

    > 3. You are correct. Here's what the code looks like.
    > <TR>
    > <TH align="middle" valign="top" nowrap>
    > <INPUT type="button" value="Add" id=Add name=Add
    > style="WIDTH: 50px; HEIGHT: 20px" onclick="window.open
    > ('UpdateEmails.asp',null,'toolbar=0,scrollbars=0,
    > resizable=1,
    > location=0,height=100,width=440,menubar=0,left=300,top=250'
    > )">
    > </TH>
    > </TR>
    > <TR>
    > <TH align="middle" valign="top" nowrap>
    > <INPUT type="button" value="Delete" id=Delete name=Delete
    > style="WIDTH: 50px; HEIGHT: 20px" onclick="window.open
    > ('UpdateEmails.asp',null,'toolbar=0,scrollbars=0,
    > resizable=1, location=0,
    > height=100,width=440,menubar=0,left=300,top=250')">
    > </TH>
    > </TR>
    >
    > At the moment, to add an email address you would type it
    > in and presses submit.
    >
    > The same thing is what I considered for the delete
    > process, but I've been rethinking that. I would prefer to
    > do tag each email using the CTLR key then press the delete
    > key, but I'm not sure how to do that in ASP.

    I'm not sure why you're popping up a window after the choice is chosen to
    delete. If you already have a list, you could just tag and delete from
    there and possibly add a confirmation for the delete which could popup. To
    add, yes, popping up a window or exposing a hidden area to accept input
    would work.

    > 4. I'm ONLY updating the LISTBOX with additions/deletions
    > of emails. No DB updates are being done. There is a
    > separate profile's ASP page for that already.

    So, when you update, the list updates in the list array and when you submit
    you do what, rewrite the list, only modify the ones that have changed? How
    do you verify which ones need to be updated?

    > 5. Once all emails are selected the user can press the
    > email button on the main WebPages. To me, it's a modified
    > version of email software using the NotesMail object. I
    > think it would have been easier to develop something in
    > Lotus Notes rather than ASP, but I don't think anyone here
    > knows how and they wanted it done this way.

    Are you saying a lot of email addresses are tagged (selected) and then when
    you press this email button that a message gets sent to these addresses?

    > 6. You had suggested using a frame instead of a popup.
    > How do I do that?

    If you were using a frame, you would set your main page as a frameset. Put
    your controls in one frame, put your existing data in another frame. Click
    on a control to perform a function and update the data, with the results, in
    the other frame.

    > What are the advantages of a frame
    > opposed to popping up a new ASP?

    Everything stays in the same window but other than that I can't think of
    any. Dealing with a frame is similar to dealing with popup windows since
    you have to specify your target. You name the frames in your frameset and
    then call for them by name.

    > Would you recommend
    > having the frame open onload or when the user click
    > add/delete, then close after their selections?

    Seeing that you're only working with one add and one delete routine and then
    a button to email with two list boxes, I'd probably do it all on one page
    and just use hidden controls. However, any of these should be as easy as
    the next. Hidden controls, frameset, popup window...

    > I
    > personally don't like popup, but there are some cases in
    > which they are useful.


    I usually only use popup windows for data entry except for alert
    notifications.

    --
    Roland

    This information is distributed in the hope that it will be useful, but
    without any warranty; without even the implied warranty of merchantability
    or fitness for a particular purpose.
    Roland Hall, Dec 28, 2003
    #7
  8. Scott

    Roland Hall Guest

    Roland Hall, Dec 31, 2003
    #8
    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. find clausen

    window.opener.top.location.top.close ???

    find clausen, Oct 5, 2003, in forum: Javascript
    Replies:
    2
    Views:
    433
    find clausen
    Oct 5, 2003
  2. saiho.yuen
    Replies:
    3
    Views:
    421
    kaeli
    Sep 14, 2004
  3. Gordon Mohr
    Replies:
    2
    Views:
    94
  4. Replies:
    2
    Views:
    461
  5. Jeff

    top.location.href question

    Jeff, Dec 24, 2006, in forum: Javascript
    Replies:
    2
    Views:
    146
Loading...

Share This Page