我有一个嵌套的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是嵌套网格视图。
}
答案 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