FluxEngine
FluxEngine

Reputation: 13290

Passing radio button parameter to another function in vb.net

I have 2 functions, one is SaveData() and the other is SendEmail()

in the SaveData() the radio buttons that are selected are saved, and the SendMail() is called at the end.

in the SendMail() the radio buttons are "tested" and then one of two emails is sent out based on the radio choices.

The problem I am having is passing the parameters correctly. I have tried several different method but the parameters are not being sent to SendMail()

The radio buttons are Yes/No questions

Any thoughts on why the parameters are not being passed?

Here is what I have:

Protected Function SaveData()
...
Q1 = Me.rblnewqst1.SelectedValue
        Q2 = Me.rblnewqst2.SelectedValue
        Q3 = Me.rblnewqst3.SelectedValue
        Q4 = Me.rblnewqst4.SelectedValue
        Q5 = Me.rblnewqst5.SelectedValue

....

and the SendEmail() is

Protected Sub SendEmail(ByVal rblnewqst1 As Object, ByVal rblnewqst2 As Object, ByVal rblnewqst3 As Object, ByVal rblnewqst4 As Object, ByVal rblnewqst5 As Object)

    If rblnewqst1.SelectedValue = 2 Or rblnewqst2.SelectedValue = 2 Or rblnewqst3.SelectedValue = 2 Or rblnewqst4.SelectedValue = 2 Or rblnewqst5.SelectedValue = 2 Then

        Dim sResponseFromName As String = "[email protected]"
        Dim sResponseToName As String = txtEmail.Text
        Dim sResponseSubject As String = "Denied"
        Dim sResponseBody As String = "Message>"


        Try
            Dim mm As New MailMessage(sResponseFromName, sResponseToName)
            Dim SMTP As New SmtpClient

            SMTP.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis

            mm.Subject = sResponseSubject
            mm.Body = sResponseBody
            mm.IsBodyHtml = True

            Try

                SMTP.Send(mm)

            Catch exSmtpException As SmtpException
                Dim stemp As String = exSmtpException.Message.ToString
            End Try

        Catch ex As ApplicationException
            Dim stemp As String = ex.InnerException.Message.ToString
        End Try

    Else
        Dim sResponseFromName As String = "[email protected]"
        Dim sResponseToName As String = txtEmail.Text
        Dim sResponseSubject As String = "Accepted"
        Dim sResponseBody As String = "MESSAGE....."

        Try
            Dim mm As New MailMessage(sResponseFromName, sResponseToName)
            Dim SMTP As New SmtpClient

            SMTP.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis

            mm.Subject = sResponseSubject
            mm.Body = sResponseBody
            mm.IsBodyHtml = True

            Try

                SMTP.Send(mm)

            Catch exSmtpException As SmtpException
                Dim stemp As String = exSmtpException.Message.ToString
            End Try

        Catch ex As ApplicationException
            Dim stemp As String = ex.InnerException.Message.ToString
        End Try
    End If

End Sub

Upvotes: 0

Views: 1670

Answers (1)

Jay
Jay

Reputation: 6017

Like HardCode mentioned in his comments, I do recommend you always work with Option Explicit and Option Strict on.

The first thing I would do is alter the way the SendMail part works, to take the values from the radio buttons. Your If is checking against and integer value, so I would use Integer as the type.

So something more like:

Protected Sub SendEmail(ByVal q1 As Integer, ByVal q2 As Integer)

If q1 = 2 Or q2 = 2 Then
etc...
End IF

I shortened the list so I didn't have to type as much. In general I think it is better practice to send values than entire objects, unless you need the entire control for a specific reason. Also, sending object isn't something I recommend doing unless you have no other choice.

The other thing I would recommend, to test it, is setting a break point just inside the sendEmail Sub, use quick watch to see what the actual objects/types are that are being sent to your method that you are checking.

Upvotes: 1

Related Questions