我在数据网格模板字段中有一个下拉列表控件。在SelectedIndexChanged事件中,我只想获取sender对象的位置,以便创建对发件人对象所在行的引用。我在google上找到的是如何循环遍历datagrid的每一行来进行比较它发送者的客户端ID,以查看它是否实际上是我选择的行。为什么我不能只获取发送方对象的位置并只使用它来创建该gridviewrow的实例?为什么以下不起作用?
protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow row = (GridViewRow)GridView1.SelectedRow;
var store = row.Cells[0].Text; //I get the Object reference not set to an instance of an object error here
}
我错过了什么吗?
答案 0 :(得分:2)
sender
是DropDownList。它的NamingContainer是GridViewRow
。这有一个属性RowIndex。我假设这个(或行)是你想要的。以下是:
var row = (GridViewRow)((Control)sender).NamingContainer;
var rowIndex = row.RowIndex;