get cell value within gridview

M

Mike

I have a gridview that has a button in the last cell of each row. I want to get the text from cell 1 for that row the button was clicked on.

So if my gridview looks like this:

N-12 BMW [select]
N-35 Mercedes [select]

if my user clicks row 2, I want to see Mercedes, How can I do that?

I have a buttonClick event for my select button, I'm trying to pull the values using the DataKeyName, but I keep getting 'object reference not set to an instance of an object.

here is what i'm trying

select_Click()
{
string make = grid1.SelectedDataKey.Values["CarMake"].toString();

}

any suggestions on how I can get the cell 1 text for the selected row within my Select_Click()?
 
S

S_K

I have a gridview that has a button in the last cell of each row. I want to get the text from cell 1 for that row the button was clicked on.

So if my gridview looks like this:

N-12 BMW [select]
N-35 Mercedes [select]

if my user clicks row 2, I want to see Mercedes, How can I do that?

I have a buttonClick event for my select button, I'm trying to pull the values using the DataKeyName, but I keep getting 'object reference not set to an instance of an object.

here is what i'm trying

select_Click()
{
string make = grid1.SelectedDataKey.Values["CarMake"].toString();

}

any suggestions on how I can get the cell 1 text for the selected row within my Select_Click()?

Try using the GridView.SelectedIndex value to point to the selected
row.
Then use the GridView1.Rows[SelectedIndex].Cells[1].Text to get the
value inside the cell.

I hope that helps!

Steve
 
M

Mike

I tried that and it gave me this error:

Index was out of range. Must be non-negative and less than the size
of the collection. Parameter name: index



S_K said:
I have a gridview that has a button in the last cell of each row. I want
to get the text from cell 1 for that row the button was clicked on.

So if my gridview looks like this:

N-12 BMW [select]
N-35 Mercedes [select]

if my user clicks row 2, I want to see Mercedes, How can I do that?

I have a buttonClick event for my select button, I'm trying to pull the
values using the DataKeyName, but I keep getting 'object reference not
set to an instance of an object.

here is what i'm trying

select_Click()
{
string make = grid1.SelectedDataKey.Values["CarMake"].toString();

}

any suggestions on how I can get the cell 1 text for the selected row
within my Select_Click()?

Try using the GridView.SelectedIndex value to point to the selected
row.
Then use the GridView1.Rows[SelectedIndex].Cells[1].Text to get the
value inside the cell.

I hope that helps!

Steve
 
M

Mike

I've tried that to and get;

Object reference not set to an instance of an object

here is what i've tried actaully and got the above message for all
protected void SendSales_Click(object sender, EventArgs e)
{
try
{
string carMake= " ";
//carMake= grid1.SelectedDataKey.Values[1].ToString();
//carMake =
grid1.SelectedDataKey.Values["CarMake"].ToString();
//carMake = grid1.SelectedDataKey["CarMake"].ToString();
//carMake =
grid1.Rows[grid1.SelectedIndex].Cells[1].Text.ToString();
//carMake = grid1.SelectedRow.Cells[1].Text.ToString();

Response.Write(carMake);

}
catch (Exception ex)
{
result = ex.Message;
}
}


Mark Rae said:
any suggestions on how I can get the cell 1 text for the selected row
within my Select_Click()?

grid1.SelectedRow.Cells[1].Text;
 
S

S_K

I've tried that to and get;

Object reference not set to an instance of an object

here is what i've tried actaully and got the above message for all
protected void SendSales_Click(object sender, EventArgs e)
{
try
{
string carMake= " ";
//carMake= grid1.SelectedDataKey.Values[1].ToString();
//carMake =
grid1.SelectedDataKey.Values["CarMake"].ToString();
//carMake = grid1.SelectedDataKey["CarMake"].ToString();
//carMake =
grid1.Rows[grid1.SelectedIndex].Cells[1].Text.ToString();
//carMake = grid1.SelectedRow.Cells[1].Text.ToString();

Response.Write(carMake);

}
catch (Exception ex)
{
result = ex.Message;
}
}



any suggestions on how I can get the cell 1 text for the selected row
within my Select_Click()?
grid1.SelectedRow.Cells[1].Text;

- Show quoted text -

If you get an error "Object instance not set..." it's because the
GridView hasn't been created yet. Try implementing your logic in the
GridView1_DataBound(..) event. That way you are certain that the
GridView exists.

Steve
 
M

Mike

On this button, another developer setup an CommandArgument and is getting a
value that way within this same SendSales_Click(), is there a way to add
another value to that CommandArgument so it's passing 2 instead of 1 value?


If I put this in the grid_databound method, how would that work in passing
the value to the button when the user clicks it?
The Grid is already bound, the values are already there in the grid, I just
want the value from cell[1], when I click the button.



S_K said:
I've tried that to and get;

Object reference not set to an instance of an object

here is what i've tried actaully and got the above message for all
protected void SendSales_Click(object sender, EventArgs e)
{
try
{
string carMake= " ";
//carMake=
grid1.SelectedDataKey.Values[1].ToString();
//carMake =
grid1.SelectedDataKey.Values["CarMake"].ToString();
//carMake =
grid1.SelectedDataKey["CarMake"].ToString();
//carMake =
grid1.Rows[grid1.SelectedIndex].Cells[1].Text.ToString();
//carMake =
grid1.SelectedRow.Cells[1].Text.ToString();

Response.Write(carMake);

}
catch (Exception ex)
{
result = ex.Message;
}
}

message

any suggestions on how I can get the cell 1 text for the selected row
within my Select_Click()?
grid1.SelectedRow.Cells[1].Text;

- Show quoted text -

If you get an error "Object instance not set..." it's because the
GridView hasn't been created yet. Try implementing your logic in the
GridView1_DataBound(..) event. That way you are certain that the
GridView exists.

Steve
 
M

Mark Rae [MVP]

I've tried that to and get;

Object reference not set to an instance of an object

here is what i've tried actaully and got the above message for all
protected void SendSales_Click(object sender, EventArgs e)
{
try
{
string carMake= " ";
//carMake=
grid1.SelectedDataKey.Values[1].ToString();
//carMake =
grid1.SelectedDataKey.Values["CarMake"].ToString();
//carMake =
grid1.SelectedDataKey["CarMake"].ToString();
//carMake =
grid1.Rows[grid1.SelectedIndex].Cells[1].Text.ToString();
//carMake =
grid1.SelectedRow.Cells[1].Text.ToString();

Response.Write(carMake);

}
catch (Exception ex)
{
result = ex.Message;
}
}

message

any suggestions on how I can get the cell 1 text for the selected row
within my Select_Click()?
grid1.SelectedRow.Cells[1].Text;

- Show quoted text -

If you get an error "Object instance not set..." it's because the
GridView hasn't been created yet. Try implementing your logic in the
GridView1_DataBound(..) event. That way you are certain that the
GridView exists.

Steve
 
M

Mark Rae [MVP]

If you get an error "Object instance not set..." it's because the
GridView hasn't been created yet. Try implementing your logic in the
GridView1_DataBound(..) event. That way you are certain that the
GridView exists.

??? The OP is trying to get the value of one of the GridView's cells by
clicking a button on the GridView - he wouldn't even see the button if the
GridView hadn't been created yet...
 
M

Mark Rae [MVP]

I've tried that to and get;

Object reference not set to an instance of an object

Hmm - OK...

Set a breakpoint on the first line of the click even and run the code again

1) Does the code jump into the correct method?

2) Assuming it does, in the Immediate window write grid1 and press Enter -
do you see the properties of your GridView?

3) Assuming you do, in the Immediate window write grid1.SelectedRow and
press Enter - what do you see...?
 
M

Mike

1) Does the code jump into the correct method?
Yes

2) Assuming it does, in the Immediate window write grid1 and press Enter -
do you see the properties of your GridView;
yes, but these properties are set to the following, even though I
selected a row via the button
SelectedDataKey: null
SelectedIndex: -1
SelectedRow: null
SelectedRowStyle: {System.Web.UI.WebControls.TableItemStyle}
SelectedValue: null


3) Assuming you do, in the Immediate window write grid1.SelectedRow and
press Enter - what do you see...? null is displayed in the windows
 
I

Ian Semmel

Just put a test

if ( SelectedIndex < 0 )
return;


-----Original Message-----
From: Mike [mailto:[email protected]]
Posted At: Friday, 19 October 2007 3:49 AM
Posted To: microsoft.public.dotnet.framework.aspnet
Conversation: get cell value within gridview
Subject: Re: get cell value within gridview

1) Does the code jump into the correct method?
Yes

2) Assuming it does, in the Immediate window write grid1 and press
Enter -
do you see the properties of your GridView;
yes, but these properties are set to the following, even though
I
selected a row via the button
SelectedDataKey: null
SelectedIndex: -1
SelectedRow: null
SelectedRowStyle:
{System.Web.UI.WebControls.TableItemStyle}
SelectedValue: null


3) Assuming you do, in the Immediate window write grid1.SelectedRow
and
press Enter - what do you see...? null is displayed in the windows



Mark Rae said:
Hmm - OK...

Set a breakpoint on the first line of the click even and run the code
again

1) Does the code jump into the correct method?

2) Assuming it does, in the Immediate window write grid1 and press Enter -
do you see the properties of your GridView?

3) Assuming you do, in the Immediate window write grid1.SelectedRow and
press Enter - what do you see...?
 
M

Mark Rae [MVP]

OK.

SelectedRow: null

Aha - well there's your problem right there...

Whatever you are doing behind the click of the Buttons in the GridView's
rows, it's not actually marking the row the Button is on as Selected...

Fix that, and everything else should work...

Alternately, wire up a SelectedIndexChanged event to the GridView

protected void grid1_SelectedIndexChanged(Object sender, EventArgs e)
{
GridViewRow objRow = grid1.SelectedRow;
}

Does that at least tell you which row is selected...?
 
M

Mike

I've just noticed (after about an hour on this), the developer that created
this page is using a template field that has a imgButton in it. So he has
the image Button calling the Sales_Click() method. he is currently passing
the ID of the field using the CommandArgument.

So I guess I have a new issue then with this. Is there a way to either pass
2 parameters in the command argument or is there a way to get the value from
a particular cell within the grid when the user clicks the imgButton on a
row?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,898
Latest member
BlairH7607

Latest Threads

Top