Solved

creating dropdownlist from code behind and javascript

Posted on 2003-11-07
10
986 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
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
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
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 

Author Comment

by:trevoray
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
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

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

The object model of .Net can be overwhelming at times – so overwhelming that quite trivial tasks often take hours of research. In this case, the task at hand was to populate the datagrid from SQL Server database in Visual Studio 2008 Windows applica…
Many of us here at EE write code. Many of us write exceptional code; just as many of us write exception-prone code. As we all should know, exceptions are a mechanism for handling errors which are typically out of our control. From database errors, t…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

763 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

9 Experts available now in Live!

Get 1:1 Help Now