2

I have a TemplateField column in a gridview with a button inside of it.

There is NO key value (surely that was not designed by me) , but in the other hand there aren't redundancies when comparing each single column, because they are events, and there is "starting date" and "ending date" of something that could not happen twice at the same time.

I've already figured selecting with these values and all, but I just want the button to pass about five arguments to a given function.

I've tested:

<asp:Button  CommandArgument='<%# Eval("day")%>'  ID="Button2" runat="server" Text="Button" />

And it works properly, the day of the clicked row is passed, and could be retrieved through:

e.CommandArgument.ToString();

in the GridView_RowCommand handler.

How do I pass more than one argument? I've thought about concatenating with a separating character (wouldn't be that bad) but besides not knowing how to do it yet (didn't want to invest in a poor solution) I want a smarter one.

Marcelo
  • 3,371
  • 10
  • 45
  • 76
  • i was going to ask the same question..!!! – jjj Apr 05 '10 at 12:34
  • 1
    You can concatenate like that: `CommandArgument='<%# Eval("day") + ", etc," + Eval("userId") %>'` - but yes, I agree that it's a dirty solution. – ANeves Apr 05 '10 at 12:53
  • @ MarceloRamires...i am not kidding ... the only different that i am working on vb.. – jjj Apr 05 '10 at 13:02
  • @jjj In fact, I AM working on VB.NET too, but as people in stackoverflow tend to not answer questions when I say I use VB (even when the question doesn't quite involve codebehind programming – Marcelo Apr 05 '10 at 14:04
  • oh.... realy?!.. it is not a big different..!! – jjj Apr 06 '10 at 06:24

1 Answers1

2

The easiest way may be to access the GridView row via the button and access the values that way:

void Button2_Click(object o, EventArgs e) {
    Button myButton = (Button)o;
    GridViewRow row = (GridViewRow)muButton.Parent.Parent;

    string value1 = row.Cells[0].Text;
    string value2 = row.Cells[1].Text;
    ...
}
Chris Van Opstal
  • 36,423
  • 9
  • 73
  • 90