Solved

creating dropdownlist from code behind and javascript

Posted on 2003-11-07
10
999 Views
Last Modified: 2007-12-19
if i am creating a dropdownlist dynamically in code behind, how can i add a onChange javascript function to it?

thanks!
0
Comment
Question by:trevoray
  • 6
  • 3
10 Comments
 

Author Comment

by:trevoray
ID: 9704126
this is my current code for the dropdownlist, it is placing it in the placeholder named "rctable"

 ddl = New DropDownList
                ddl.ID = "RCDropDownList" & int
                ddl.Items.Add(New ListItem(dtrMembers("rcmbrtype"), dtrMembers("rcfeetext")))
                rctable.Controls.Add(ddl)
0
 
LVL 1

Expert Comment

by:ib_setiawan
ID: 9705386
Perhaps I can help you..

You can add these two lines at your code:
-----------------------------------------------
        ddl.AutoPostBack = True
        AddHandler ddl.SelectedIndexChanged, AddressOf DropDownChange

And then add this method:
------------------------------
    Private Sub DropDownChange(ByVal sender As Object, ByVal e As EventArgs)
        'this is your code when there is a change event
         txtNote.Text = ddl.SelectedItem.Text
    End Sub

The autopost back is used to auto wire the page when there is a change at the control.
And the AddHandler function is used to bind the SelectedIndexChanged event to DropDownChange method.

The code is like this:
-----------------------
    Protected WithEvents txtNote As System.Web.UI.WebControls.TextBox
    Protected WithEvents rctable As System.Web.UI.WebControls.PlaceHolder
    Protected WithEvents ddl As System.Web.UI.WebControls.DropDownList

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Create drop downlist at runtime
        ddl = New DropDownList()
        ddl.ID = "RCDropDownList1"
        ddl.Items.Add(New ListItem("Shampo", "S"))
        ddl.Items.Add(New ListItem("Deodorant", "D"))
        ddl.Items.Add(New ListItem("Pasta", "P"))
        rctable.Controls.Add(ddl)

        ddl.AutoPostBack = True
        AddHandler ddl.SelectedIndexChanged, AddressOf DropDownChange

    End Sub

    Private Sub DropDownChange(ByVal sender As Object, ByVal e As EventArgs)
        txtNote.Text = ddl.SelectedItem.Text
    End Sub


Regards,
Iman Budi Setiawan
0
 
LVL 2

Expert Comment

by:CuSo4
ID: 9706538
For a Javanscript onChange instead of a codebehind onChange, you can use this:

                ddl = New DropDownList
                ddl.ID = "RCDropDownList" & int
                ddl.Items.Add(New ListItem(dtrMembers("rcmbrtype"), dtrMembers("rcfeetext")))
                rctable.Controls.Add(ddl)
                ddl.Attributes.Add("onChange","javascript:return confirm('Are you sure?');")
0
 

Author Comment

by:trevoray
ID: 9707006
CuSo4, thanks for the javascript. ok, question. how can i modify your script to run a javascript function that already exists? i have a javascript function that will change the value of a text box when an item is selected...

thanks!
0
 
LVL 2

Expert Comment

by:CuSo4
ID: 9707121
hmm, if your javascript function is already in your apsx-page, then it's quite easy:
assuming your Javascript Function is "thisFunction()":

                     ddl.Attributes.Add("onChange","javascript:thisFunction();")

If your Javascript Page isn't in your aspx-page yet, and you want to add/create it with code-behind, you can do it like this:
In your Page_Load you can add the following lines:

                     If (Not IsClientScriptBlockRegistered("Script")) Then
                         strScript = "<script language='JavaScript'>"
                         strScript = strScript & vbCrLf
                         strScript = strScript & "Function thisFunction() {"
                         strScript = strScript & "//Your Function script here"
                         strScript = strScript & "}"
                         strScript = strScript & "</script>"
                         RegisterClientScriptBlock("Script", strScript)
                     End If

                      ddl.Attributes.Add("onChange","javascript:thisFunction();")
0
DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

 

Author Comment

by:trevoray
ID: 9709730
ok, can you help me out with this last part. actually writing the javascript?

in html...
<script language=Javascript>
Function thisFunction(myValue)
    document.form.mytextbox.value = myValue
End Function
</script>

and in code behind...

    ddl = New DropDownList
               ddl.ID = "RCDropDownList" & int
               ddl.Items.Add(New ListItem(dtrMembers("rcmbrtype"), dtrMembers("rcfeetext")))
               rctable.Controls.Add(ddl)
               ddl.Attributes.Add("onChange","javascript:thisFunction(dtrMembers("rcfeevalue"));")


would this work?

thanks!
0
 
LVL 2

Accepted Solution

by:
CuSo4 earned 500 total points
ID: 9709747
hmm, I think excepting a quote problem in your last line this should be working... The last line has to be:

                           ddl.Attributes.Add("onChange","javascript:thisFunction(" & dtrMembers("rcfeevalue") & ");")

(because dtrMembers("rcfeevalue") is a variable in your code-behind, and not in your Javascript)
0
 

Author Comment

by:trevoray
ID: 9709787
ok, can we reformat it if i used a string instead of dtrMembers("rcfeevalue")  ?

strRCFeevalue?

how would i do it then? i tried and it is giving me a string not defined error in the javascript when the page is run.

thanks!
0
 

Author Comment

by:trevoray
ID: 9709916
this is what i tried and i am getting a  javascript null error. i think this is because it is not passing the values ( i have two) to the javascript function because of the formating of quotation marks.

  ddl.Attributes.Add("onChange", "javascript:RC_onselect(" & strRCFeeValue & "," & strRCTextbox & ");")
0
 

Author Comment

by:trevoray
ID: 9709976
ok, the javascript worked. thanks for your help! i'm still having issues, but the javascript is not giving errors, i might open up new topic with my new problems.

this is what worked:

ddl.Attributes.Add("onChange", "javascript:RC_onselect('" & strRCFeeValue & "','" & strRCTextbox & "');")
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

It seems a simple enough task, yet I see repeated questions asking how to do it: how to pass data between two forms. In this article, I will show you the different mechanisms available for you to do just that. This article is directed towards the .N…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.
Both in life and business – not all partnerships are created equal. As the demand for cloud services increases, so do the number of self-proclaimed cloud partners. Asking the right questions up front in the partnership, will enable both parties …

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now