Solved

Gridview - select

Posted on 2006-10-19
20
410 Views
Last Modified: 2008-01-09
I have a column (buttons "Select") I want to click on a button and disply more info about a customer on a second page from a different table. I have set DatakeyNames on  Gridview  properties to CustomerID. What else do I need to do?
0
Comment
Question by:VBdotnet2005
20 Comments
 
LVL 9

Expert Comment

by:peterdungan
Comment Utility
open the second page with post parameters of the foreign key from the selected record
0
 

Author Comment

by:VBdotnet2005
Comment Utility
I'm not so sure how to do that. Could you help?
0
 
LVL 10

Expert Comment

by:jnhorst
Comment Utility
Your data grid should have an ItemCommand event that fires when you click the button.  The event handler will have an argument (the variable is "e") from which you will be able to get info about the ID.  You should have the CustomerID as a non-visible field in your grid (maybe make it the very first column).  In the ItemCommand event, do this:

// this assumes the customer id is the first column, but can be made not visible.
string custID = e.Item.Cells[0].Text;

// redirect the browser to the other page.
string url = String.Concat("OtherPage.aspx?CustID=", custID);
Response.Redirect(url);

This will cause the other page to show with the customer id in the querystring (the part of the url after the question mark).

Then in OtherPage.aspx, you can code the Page_Load event to get this value like this:

// get the id...
int custID = Convert.ToInt32(Request.QueryString["CustID"]);

Then use this to query your database for that customer's info and show on the page.

John
0
 

Author Comment

by:VBdotnet2005
Comment Utility
I'm using VB. The equavalent of ItemCommand in GridView is RowCommand. However, I don't see "item" here.
   
Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand

        Dim custID As String = e.item.Cells(0).Text             ----------------------------------------error item
        Dim url As String = [String].Concat("OtherPage.aspx?CustID=", custID)
        Response.Redirect(url)

    End Sub
0
 
LVL 29

Accepted Solution

by:
Nightman earned 500 total points
Comment Utility
Try this (derived from the documentation at http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx)

Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
  Dim index As Integer = Convert.ToInt32(e.CommandArgument)
  Dim row As GridViewRow = CustomersGridView.Rows(index)
  Dim custID As String = row.Cells(0).Text
  Dim url As String = [String].Concat("OtherPage.aspx?CustID=", custID)
  Response.Redirect(url)
End Sub
0
 

Author Comment

by:VBdotnet2005
Comment Utility

OtherPage.aspx

I get this error - Input string was not in a correct format.


Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load


        Dim custID As Integer = Convert.ToInt32(Request.QueryString("CustID"))   ------->>>>Input string was not in a correct format.

        If Not IsPostBack Then
            Try

                Dim Constr As String = " mystring"
                Dim con As New SqlConnection(Constr)
                Dim Comstr As String = "select *from residence where id = CustID"
                Dim da As New SqlDataAdapter(Comstr, con)
                Dim ds As New DataSet

                da.Fill(ds, "table1")



                Me.GridView1.DataSource = ds
                Me.GridView1.DataMember = "table1"
                Me.GridView1.DataBind()



            Catch ex As Exception

                Response.Write(ex.ToString)


            End Try


        End If


    End Sub

0
 
LVL 29

Expert Comment

by:Nightman
Comment Utility
What is customerID? Text?
0
 

Author Comment

by:VBdotnet2005
Comment Utility
It is number.
0
 

Author Comment

by:VBdotnet2005
Comment Utility
System.InvalidCastException: Conversion from string "" to type 'Integer' is not valid. ---> System.FormatException: Input string was not in a correct format. at Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat) at Microsoft.VisualBasic.
0
 
LVL 29

Expert Comment

by:Nightman
Comment Utility
No, it's an empty string. Conversion from string "" to Integer is not valid. The value is not being passed to that page.
0
Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

 

Author Comment

by:VBdotnet2005
Comment Utility
I set a property "DatakeyNames"  to CustomerID         ------this is on  Gridview1
0
 

Author Comment

by:VBdotnet2005
Comment Utility
How can I correct it then?
0
 
LVL 29

Expert Comment

by:Nightman
Comment Utility
The code that I helped you with takes the text  value of the Cell(0) of the grid and passes it through. What is this value?
0
 

Author Comment

by:VBdotnet2005
Comment Utility
It is empty  -  ""
0
 
LVL 29

Expert Comment

by:Nightman
Comment Utility
If that is the correct value that you are trying to pass through, and it's empty, look into why.
Is the data correct?
Is this a null value coming back from the database?
Should you be trying to pass a different cell (e.g. cell(1) or cell(2))?
Is there another property that you should be passing (e.g. DatakeyNames)?
0
 

Author Comment

by:VBdotnet2005
Comment Utility
I changed this
Dim ID As String = row.Cells(0).Text

to

Dim ID As String = row.Cells(1).Text

On Otherpage.aspx - I get the same table from my first page
It does display the record the selected on the address bar  - http://localhost/Sample/OtherPage.aspx?ID=6

Why I won't display just the record I select on Gridview?

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load


        Dim custID As Integer = Convert.ToInt32(Request.QueryString("CustID"))  
        If Not IsPostBack Then
            Try

                Dim Constr As String = " mystring"
                Dim con As New SqlConnection(Constr)
                Dim Comstr As String = "select *from residence where id = CustID"
                Dim da As New SqlDataAdapter(Comstr, con)
                Dim ds As New DataSet

                da.Fill(ds, "table1")



                Me.GridView1.DataSource = ds
                Me.GridView1.DataMember = "table1"
                Me.GridView1.DataBind()



            Catch ex As Exception

                Response.Write(ex.ToString)


            End Try


        End If


    End Sub

0
 

Author Comment

by:VBdotnet2005
Comment Utility
correction   - Dim Comstr As String = "select *from residence where id = ID"
0
 

Author Comment

by:VBdotnet2005
Comment Utility

I corrected this line -   Dim Comstr As String = "select *from residence where id = ID"

to

  Dim Comstr As String = "select *from residence where id =" & ID

I finally works...wow

Goodnight, Nightman - Thank you so much for the help
0
 
LVL 29

Expert Comment

by:Nightman
Comment Utility
Hehe, good morning you mean (9.30 am here in sunny South Africa).

Cheers
Night
0
 
LVL 29

Expert Comment

by:Nightman
Comment Utility
Don't forget to PAQ this question. Also, don't forget to delete the pointer question (http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/ASP_DOT_NET/Q_22033181.html) - I deliberately didn't post anything there so that you can delete it quickly and get the 50 points refunded.
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

AJAX ModalPopupExtender has a required property "TargetControlID" which may seem to be very confusing to new users. It means the server control that will be extended by the ModalPopup, for instance, if when you click a button, a ModalPopup displays,…
ASP.Net to Oracle Connectivity Recently I had to develop an ASP.NET application connecting to an Oracle database.As I am doing it first time ,I had to solve several problems. This article will help to such developers  to develop an ASP.NET client…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
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: …

762 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