我正在使用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)
如果您还需要去的一个参考GridViewRow的DropDownList(或在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)