Solved

Reading values from a Gridview

Posted on 2013-01-31
8
346 Views
Last Modified: 2013-01-31
I am building a small web app for managing tasks and I have the following code which lets me Edit a row in gridview and then select a resource, when I update that row the code then looks up the resources email address and then send an email with the details of what was in that row. My issue is the last part, how can I read all the other information in that row and assign to variables ?
I used e.NewValues(5).ToString() to retrieve the resource name, but need to retrieve the other row details to be included in the email.

Any ideas ?



Sub GridView1_RowUpdated(ByVal sender As Object, ByVal e As GridViewUpdatedEventArgs)
        ' Indicate whether the update operation succeeded.
        If e.Exception Is Nothing Then
            Dim strEmail As String
            strEmail = String.Empty
            Dim Resource As String = e.NewValues(5).ToString()

            'Retrieve email address
            Dim cm As New SqlCommand("SELECT Res_Email FROM Resource_ref_Data WHERE Resource = @FirstName")
            Dim param As New SqlParameter("@FirstName", Resource)
            cm.Parameters.Add(param)
            Dim cn As New SqlConnection("Data Source=server1;Initial Catalog=EMS;Persist Security Info=True;User ID=user;Password=xxxxxx")
            cm.Connection = cn
            Dim oResult As Object
            If cn.State = ConnectionState.Closed Then
                cn.Open()
            End If
            oResult = cm.ExecuteScalar()
            If (Not oResult Is Nothing) Then
                strEmail = oResult.ToString()
            End If
            SendMailResource(strEmail)
        Else
            e.ExceptionHandled = True
            Response.Write("An error occurred while attempting to update the row. No email sent.")

        End If
    End Sub

    Private Function currentRow() As Object
        Throw New NotImplementedException
    End Function

    Protected Sub SendMailResource(ByVal strEmailAddress As String)
        Dim mail As New MailMessage()
        'set the addresses

        Dim sEmailBody As String
        sEmailBody = My.Resources.Resource1.Resource_Email

        'sEmailBody = sEmailBody.Replace("[strEnv]", strEnv)
        'sEmailBody = sEmailBody.Replace("[strBuild]", )
        'sEmailBody = sEmailBody.Replace("[strComponent]", )
        'sEmailBody = sEmailBody.Replace("[strSubComponent]", )
        'sEmailBody = sEmailBody.Replace("[strResource]", )
        'sEmailBody = sEmailBody.Replace("[strComments]", )
        'sEmailBody = sEmailBody.Replace("[strDate]", )
        'sEmailBody = sEmailBody.Replace("[strDoc]", )


        mail.From = New MailAddress("test@test.com")
        mail.To.Add(strEmailAddress)
        'set the content
        mail.Subject = "Task Awaiting"
        mail.Body = sEmailBody
        mail.IsBodyHtml = True
        'send the message
        Dim smtp As New SmtpClient("smtp1")
        smtp.Send(mail)
    End Sub
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
       
    End Sub

Open in new window

0
Comment
Question by:ndr-itsolutions
  • 4
  • 4
8 Comments
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 38839183
>I used e.NewValues(5).ToString() to retrieve the resource name

Use

e.NewValues(IndexOfOtherColumns)

to get values for other columns.
0
 

Author Comment

by:ndr-itsolutions
ID: 38839403
I tried that and it did not work, could be my coding though, as I am new to this.

So I added the following to the gridview sub routine:

Dim strEnv As String = e.NewValues(1) 

Open in new window


and

sEmailBody = sEmailBody.Replace("[strEnv]", strEnv)

Open in new window


to the SendMail Resource routine and got the following message, stating strEnv was not declared ??
Error Message
0
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 38839416
Is the variable in the same sub as the email body code? Otherwise, that variable cannot be seen. And this issue is not related to gridview.
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:ndr-itsolutions
ID: 38839430
Not it's not in the same sub, what's the best way to fix this issue ? Put the email sub into the gridview sub ?
0
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 38839492
Or pass that value into email sub.
0
 

Author Comment

by:ndr-itsolutions
ID: 38839514
Do you have an example of the code I would use to pass the values I need ?
0
 
LVL 83

Accepted Solution

by:
CodeCruiser earned 500 total points
ID: 38839587
Just like you pass the email address.


Change

Protected Sub SendMailResource(ByVal strEmailAddress As String)

to

Protected Sub SendMailResource(ByVal strEmailAddress As String, ByVal strEnv As String)


and

SendMailResource(strEmail)

to

Dim strEnv As String = e.NewValues(1)
SendMailResource(strEmail, strEnv)
0
 

Author Closing Comment

by:ndr-itsolutions
ID: 38839788
That worked perfectly
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

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

A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

773 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