0

ネストされたグリッドビューがあります。ネストされたグリッドビューの gridview_RowDeleting イベントを定義しましたが、たとえば、ネストされたグリッドビューの最初の行を削除したい場合、このネストされたグリッドビューが親グリッドビューの 2 番目または 3 番目の行にある場合、問題があります。ネストされたグリッドビューの行を削除せず、親グリッドビューの e.RowIndex も 0 ですが、1 または 2 である必要があります。ネストされたグリッドビューの場合は 0 である必要があります。

親グリッドビューのe.RowIndexがe.RowIndexのネストされたグリッドビューと異なることを認識できるコードを変更する方法を教えてください。

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

この投稿を確認できます

于 2012-10-29T20:56:16.993 に答える