I'm using a gridview and sqldatasource.
I have a dropdownlist in my gridview with 2 values : Yes and No .
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow row = GridView1.Rows[e.RowIndex];
DropDownList ddl = ((DropDownList)row.FindControl("DropdownList1"));
if(ddl.selectedvalue == "1")
//etc..
}
I need to get the Row index because this GridViewRow row = GridView1.Rows[e.RowIndex];
is not available in the current event.
As @mellamokb has already mentioned, you always get the control that raised an event by the sender argument, you only have to cast it accordingly.
DropDownList ddl = (DropDownList)sender;
If you also need to get a reference to the GridViewRow
of the DropDownList
(or any other control in a TemplateField of a GridView), you can use the NamingContainer
property.
GridViewRow row = (GridViewRow)ddl.NamingContainer;
but I need to get the row index for getting a value from a templatefield who's not a dropdown is a textbox
You can get any control once you have the GridViewRow
reference by using row.FindControl("ID")
(TemplateField) or row.Cells[index].Controls[0]
(BoundField).
For example (assuming there's a TextBox
in another column):
TextBox txtName = (TextBox)row.FindControl("TxtName");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With