VBdotnet2005
asked on
Gridview - select
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?
open the second page with post parameters of the foreign key from the selected record
ASKER
I'm not so sure how to do that. Could you help?
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.a spx?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.Qu eryString[ "CustID"]) ;
Then use this to query your database for that customer's info and show on the page.
John
// 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.a
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.Qu
Then use this to query your database for that customer's info and show on the page.
John
ASKER
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. GridViewCo mmandEvent Args) Handles GridView1.RowCommand
Dim custID As String = e.item.Cells(0).Text -------------------------- ---------- ----error item
Dim url As String = [String].Concat("OtherPage .aspx?Cust ID=", custID)
Response.Redirect(url)
End Sub
Protected Sub GridView1_RowCommand(ByVal
Dim custID As String = e.item.Cells(0).Text --------------------------
Dim url As String = [String].Concat("OtherPage
Response.Redirect(url)
End Sub
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
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.Qu
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
What is customerID? Text?
ASKER
It is number.
ASKER
System.InvalidCastExceptio n: Conversion from string "" to type 'Integer' is not valid. ---> System.FormatException: Input string was not in a correct format. at Microsoft.VisualBasic.Comp ilerServic es.Convers ions.Parse Double(Str ing Value, NumberFormatInfo NumberFormat) at Microsoft.VisualBasic.
No, it's an empty string. Conversion from string "" to Integer is not valid. The value is not being passed to that page.
ASKER
I set a property "DatakeyNames" to CustomerID ------this is on Gridview1
ASKER
How can I correct it then?
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?
ASKER
It is empty - ""
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)?
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)?
ASKER
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.Qu eryString( "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
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.Qu
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
ASKER
correction - Dim Comstr As String = "select *from residence where id = ID"
ASKER
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
Hehe, good morning you mean (9.30 am here in sunny South Africa).
Cheers
Night
Cheers
Night
Don't forget to PAQ this question. Also, don't forget to delete the pointer question (https://www.experts-exchange.com/questions/22033181/Need-help-with-this-question.html) - I deliberately didn't post anything there so that you can delete it quickly and get the 50 points refunded.