0

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

请帮助我如何更改我的代码可以识别父gridview的e.RowIndex与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 是嵌套网格视图。

}
4

1 回答 1

0

问题是您使用嵌套 gridview 的 RowIndex 作为父 gridview 。在这种情况下e.RowIndex是指nested gridview'current row不是它的父母的 。获取父gridview的当前行的索引:

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);
}

你可以查看这篇文章

于 2012-10-29T20:56:16.993 回答