Solved

Gridview - select

Posted on 2006-10-19
20
415 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
ID: 17772574
open the second page with post parameters of the foreign key from the selected record
0
 

Author Comment

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

Expert Comment

by:jnhorst
ID: 17777518
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
Comprehensive Backup Solutions for Microsoft

Acronis protects the complete Microsoft technology stack: Windows Server, Windows PC, laptop and Surface data; Microsoft business applications; Microsoft Hyper-V; Azure VMs; Microsoft Windows Server 2016; Microsoft Exchange 2016 and SQL Server 2016.

 

Author Comment

by:VBdotnet2005
ID: 17778857
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
ID: 17781935
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
ID: 17782720

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
ID: 17782844
What is customerID? Text?
0
 

Author Comment

by:VBdotnet2005
ID: 17782860
It is number.
0
 

Author Comment

by:VBdotnet2005
ID: 17782873
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
ID: 17782883
No, it's an empty string. Conversion from string "" to Integer is not valid. The value is not being passed to that page.
0
 

Author Comment

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

Author Comment

by:VBdotnet2005
ID: 17782892
How can I correct it then?
0
 
LVL 29

Expert Comment

by:Nightman
ID: 17782893
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
ID: 17782904
It is empty  -  ""
0
 
LVL 29

Expert Comment

by:Nightman
ID: 17782911
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
ID: 17782944
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
ID: 17782948
correction   - Dim Comstr As String = "select *from residence where id = ID"
0
 

Author Comment

by:VBdotnet2005
ID: 17782955

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
ID: 17782966
Hehe, good morning you mean (9.30 am here in sunny South Africa).

Cheers
Night
0
 
LVL 29

Expert Comment

by:Nightman
ID: 17783412
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

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Question has a verified solution.

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

Sometimes in DotNetNuke module development you want to swap controls within the same module definition.  In doing this DNN (somewhat annoyingly) swaps the Skin and Container definitions to the default admin selections.  To get around this you need t…
IntroductionWhile developing web applications, a single page might contain many regions and each region might contain many number of controls with the capability to perform  postback. Many times you might need to perform some action on an ASP.NET po…
In a recent question (https://www.experts-exchange.com/questions/28997919/Pagination-in-Adobe-Acrobat.html) here at Experts Exchange, a member asked how to add page numbers to a PDF file using Adobe Acrobat XI Pro. This short video Micro Tutorial sh…
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…

777 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