父网格视图中的e.RowIndex

时间:2012-10-29 19:13:00

标签: asp.net gridview

我有一个嵌套的gridview。我已经为嵌套的gridview定义了gridview_RowDeleting事件。但是我有一个问题,当我想删除时,例如,嵌套gridview中的第一行,这个嵌套的gridview是在第二个或第三个,...父gridview的行,我可以不删除嵌套gridview中的行,而父网格视图的e.RowIndex也是0,而它应该是1或2,..对于嵌套gridview,它应该是0。

请帮助我如何更改我的代码可以识别e.RowIndex for parent gridview是不同的e.RowIndex嵌套gridview。

protected void GridViewTranstoCon_RowDeleting(object sender, GridViewDeleteEventArgs e)
{


    GridView TranstoCon = sender as GridView ;
    int transid = Convert.ToInt32(GridViewTtransmittals.DataKeys[e.RowIndex].Value);

    int Id = Convert.ToInt32(TranstoCon.DataKeys[e.RowIndex].Value);

    //Also step into this and see what it's doing
    OnDeleteTtransmittaltocon(Id,transid);

GridViewTtransmittals是父网格视图,TranstoCon是嵌套网格视图。

}

1 个答案:

答案 0 :(得分:0)

问题是您正在使用嵌套gridview的RowIndex作为父网格视图。在这种情况下e.RowIndex引用nested gridview的{​​{1}}而不是父母的current row。获取父网格视图的当前行索引:

GridViewRow parentRow = (GridViewRow)TranstoCon.Parent.Parent.Parent;
int parentRowIndex = parentRow.RowIndex;

我不太确定两个三个 .Parent是必需的。你可以尝试两种方式。

所以您的代码可以编辑如下:

protected void GridViewTranstoCon_RowDeleting(object sender, GridViewDeleteEventArgs e){
GridView TranstoCon = sender as GridView ;

// parent row
var parentRow = (GridViewRow)TranstoCon.Parent.Parent.Parent;

int transid = Convert.ToInt32(parentRow.DataKeys[parentRow.RowIndex].Value);


int Id = Convert.ToInt32(TranstoCon.DataKeys[e.RowIndex].Value);

//Also step into this and see what it's doing
OnDeleteTtransmittaltocon(Id,transid);
}

您可以查看此post