在ASP.NET中的Datagridview中找不到行索引?

时间:2010-02-12 16:06:51

标签: asp.net datagridview

当我在DropDownList中调用一个事件时,我在Datagridview中找不到行索引。

代码是:

protected void DescriptionOfProduct_SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList _DescriptionOfProduct = (DropDownList)gvSales.FindControl("DescriptionOfProduct");

    Label _Unit = (Label)gvSales.FindControl("Unit");
    Label _PriceType = (Label)gvSales.FindControl("PriceType");
    //...
}

请给我解决方案。

2 个答案:

答案 0 :(得分:1)

活动的发件人应该是您的下拉列表。

DropDownList myList = sender as DropDownList;
if(myList != null)
{
    //Now you have your selected index myList.SelectedIndex
}

如果这是另一个,则发件人显示为其他内容。

答案 1 :(得分:1)

如果下拉列表位于gridview内部,那么您可以通过意识到它位于行内的单元格中来找到该行。因此,其父级的父级就是行。

GridViewRow currentRow = (GridViewRow)_DescriptionOfProduct.Parent.Parent;
int index = currentRow.RowIndex;

修改

如果你还有这方面的问题,我会建议Mitchel Sellers在他的回答中说。通过将发件人转换为下拉列表来查找下拉列表。然后你可以找到你的行。从那里,您可以通过使用行的单元格来获取每个控件来获取控件。

以下是我之前如何做到这一点的一个例子......

protected void actionList_SelectedIndexChanged(object sender, EventArgs e)
    {
        DropDownList list = (DropDownList)sender;
        GridViewRow row = (GridViewRow)list.Parent.Parent;
        Label id = (Label)row.Cells[0].Controls[1];        

        // etc......
    }