在Gridview模板字段中获取发件人控件的位置

时间:2012-01-12 19:45:54

标签: asp.net datagrid

我在数据网格模板字段中有一个下拉列表控件。在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
}

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

sender是DropDownList。它的NamingContainerGridViewRow。这有一个属性RowIndex。我假设这个(或行)是你想要的。以下是:

var row = (GridViewRow)((Control)sender).NamingContainer;
var rowIndex = row.RowIndex;