views:

226

answers:

1

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.

+2  A: 

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 Pebble
Thank you so much! it worked perfectly. Now do you know any way I can get a column (which is constant, every row has the same value) from the datasource of the datagrid (which is a column that is NOT in the datagrid. Currently I've used sessions, but I intend to refactor it
MarceloRamires