如何在Dropdownlist中获取行索引selectedIndexChanged?

Jax*_*Jax 6 c# asp.net

我正在使用gridview和sqldatasource.

我的gridview中有一个下拉列表,其中包含2个值:是和否.

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..
}
Run Code Online (Sandbox Code Playgroud)

我需要获取Row索引,因为这GridViewRow row = GridView1.Rows[e.RowIndex];在当前事件中不可用.

Tim*_*ter 19

正如@mellamokb已经提到的那样,你总是通过sender参数获得引发事件的控件,你只需要相应地转换它.

DropDownList ddl = (DropDownList)sender;
Run Code Online (Sandbox Code Playgroud)

如果您还需要去的一个参考GridViewRowDropDownList(或在GridView的TemplateField中任何其他控件),你可以使用NamingContainer属性.

GridViewRow row = (GridViewRow)ddl.NamingContainer;
Run Code Online (Sandbox Code Playgroud)

但我需要获取行索引,以便从不是下拉列表的模板字段获取值是文本框

GridViewRow通过使用row.FindControl("ID")(TemplateField)或row.Cells[index].Controls[0](BoundField)获得引用后,您可以获得任何控制 .

例如(假设TextBox在另一列中有一个):

TextBox txtName = (TextBox)row.FindControl("TxtName");
Run Code Online (Sandbox Code Playgroud)