Click here to Skip to main content
15,881,803 members
Articles / Web Development / HTML

Dynamically populating ComboBoxes using ASP/VBScript and Detecting the parent folder of the current script

Rate me:
Please Sign up or sign in to vote.
4.97/5 (70 votes)
21 Dec 2002CPOL2 min read 213.4K   1K   64   34
An article on how to dynamically add strings to any number of drop downs using VBScript and ASP. Also explains how to get the parent folder of an ASP file.

Introduction

This article tries to throw light on how we can add options to a ComboBox using client-side scripting. This can be useful in many situations where we do not want a form to be submitted each time we want to add something to a ComboBox. The article also explains how we can get the parent folder of the current ASP file. This is useful in situations where you need to get the full physical path of a file in your application directory, as for generating the connection strings for a DB access.

Using the code

Adding elements to a ComboBox using client side script

Here we create an instance of "OPTION", assign value to it and add it to the ComboBox. The CreateElement method of document object creates an instance of an element for the "OPTION" tag.

VBScript
Dim a
a = 1

Sub Button1_OnClick
    If Text1.value <> "" Then
        Set objOpt = document.CreateElement("OPTION")
        objOpt.Value = a				
        objOpt.Text = Text1.value
        Select1.add objOpt
        Set objOpt = Nothing
        Select1.selectedIndex = a
        a = a + 1		
    End If
End Sub 

The variable a is used to track the number of items in the ComboBox. After adding the new element, we set the newly added item as the current selection.

Adding elements to a ComboBox in a different frame using client side script

The method of adding an item is same here except that we refer to the ComboBox in a different frame. The frame index is taken from 0 - n, where we have n frames in the parent window.

VBScript
Set objOpt = document.CreateElement("OPTION")
objOpt.Value = a				
objOpt.Text = Text1.value
window.parent.frames(0).Select1.add objOpt
Set objOpt = Nothing
window.parent.frames(0).Select1.selectedIndex=a
a = a+1		

Generating client-side script using ASP

VBScript
<%
    Dim i
    For i= 1 to 5
%>

Dim a<%=i%>
a<%=i%> = 1

Sub Button<%=i%>_onclick
    if Text<%=i%>.value <> "" Then
        Set objOpt = document.CreateElement("OPTION")
        objOpt.Value = a<%=i%>				
        objOpt.Text = Text<%=i%>.value
        window.parent.frames(0).Select<%=i%>.add objOpt
        Set objOpt = Nothing
        window.parent.frames(0).Select<%=i%>.selectedIndex=a<%=i%>
        a<%=i%> = a<%=i%> + 1
    End If
End Sub 

<%
    Next
%>		

Here we have five text-boxes, buttons and corresponding ComboBoxes. The script for each button is generated dynamically. The ASP is embedded in the script code, so you do not have to handle the new lines individually.

VBScript
<INPUT id="Text<%=i%>" type="text" name="Text<%=i%>"> 
<INPUT id="Button<%=i%>" type="button" value="Add<%=i%>" name="Button<%=i%>">

Finding the parent folder of current script

Here we will see two methods to get the parent folder of the current script. One instance where I found this useful was when I wanted to generate the connection string to connect to an Access database in a subfolder of the application directory.

Both methods use the ServerVariables collection of the Request method to get the virtual path of the running script. This value is then mapped to a physical path by using the MapPath method of Server object to get the physical path of the script. The first method locates the position of last '\' and gets the parent folder by removing the file name of the script.

VBScript
'Convert the virtual path of the current file to physical path		
phypath = Server.MapPath(Request.ServerVariables("SCRIPT_NAME"))

'locate position of \ from the end
slashpos = instrrev(phypath,"\")	

'separate the folder name
getpath = left(phypath,slashpos-1)		

The second method uses the FileSystemObject object to get the parent folder.

VBScript
'Convert the virtual path of the current file to physical path		
phypath = Server.MapPath(Request.ServerVariables("SCRIPT_NAME"))

'Create a FileSystemObject instance
Set fsobj = Server.CreateObject("Scripting.FileSystemObject")

'Create a File object representing the file, specified by phypath
Set fileobj = fsobj.GetFile(phypath)

'get the parent folder of fileobj
Set getdir = fileobj.ParentFolder

Here we first create a File object which represents the current file. The ParentFolder method of the File object then helps us to acquire the parent folder of the file. To get the above method working, you will require the Scripting Runtime Library [scrrun.dll] to be properly installed.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
The Code Project
United States United States
Smitha is a software developer, and has been in the industry since January 2000. She has experience in ASP.NET, C#, Windows Forms, Visual Basic, ASP, JavaScript, VBScript, and HTML. She has been with CodeProject since 2003 and currently works as Senior Editor.

In her free time, she tries out new dishes, reads a little, and puts together jigsaw puzzles. Originally from Trivandrum, Smitha currently lives with her husband and fellow CP'ian Nish [^] and her son Rohan in Columbus, Ohio.

Comments and Discussions

 
GeneralRe: Old style ASP Pin
James T. Johnson22-Dec-02 16:38
James T. Johnson22-Dec-02 16:38 
GeneralRe: Old style ASP Pin
Nish Nishant22-Dec-02 16:42
sitebuilderNish Nishant22-Dec-02 16:42 
GeneralRe: Old style ASP Pin
Paul Ingles23-Dec-02 1:11
Paul Ingles23-Dec-02 1:11 
GeneralRe: Old style ASP Pin
Nish Nishant23-Dec-02 3:25
sitebuilderNish Nishant23-Dec-02 3:25 
GeneralA suggestion... Pin
Shog922-Dec-02 13:26
sitebuilderShog922-Dec-02 13:26 
GeneralRe: A suggestion... Pin
Smitha Nishant22-Dec-02 16:33
protectorSmitha Nishant22-Dec-02 16:33 
GeneralRe: A suggestion... Pin
Nish Nishant22-Dec-02 16:36
sitebuilderNish Nishant22-Dec-02 16:36 
GeneralRe: A suggestion... Pin
James T. Johnson22-Dec-02 16:40
James T. Johnson22-Dec-02 16:40 
Nishant S wrote:
Welcome to the CP authors club

I'll second that welcome, and hope to read more articles from Smitha in the future Big Grin | :-D

James

"The elastic retreat rings the close of play as the last wave uncovers
the newfangled way.
But your new shoes are worn at the heels and
your suntan does rapidly peel and
your wise men don't know how it feels to be thick as a brick."
"Thick as a Brick" from Thick as a Brick, Jethro Tull 1972

GeneralRe: A suggestion... Pin
Nish Nishant22-Dec-02 16:41
sitebuilderNish Nishant22-Dec-02 16:41 
GeneralRe: A suggestion... Pin
James T. Johnson22-Dec-02 16:51
James T. Johnson22-Dec-02 16:51 
GeneralRe: A suggestion... Pin
Smitha Nishant22-Dec-02 17:13
protectorSmitha Nishant22-Dec-02 17:13 
GeneralRe: A suggestion... Pin
Smitha Nishant22-Dec-02 17:22
protectorSmitha Nishant22-Dec-02 17:22 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.