10

子コントロールがポストバックを実行しているグリッドビューの行インデックスを取得するにはどうすればよいですか。ポストバックを引き起こすコントロールを取得し、グリッドビューの行を返す親コンテナを見つけてインデックスを見つける方法を知っています。 RowDataBoundイベントでこれを使用して、selectedrowインデックスをチェックし、同じものをフォーマットする必要があります。子コントロールのポストバックでグリッドビューの選択されたインデックスを直接出力する他のプロパティまたは設定はありますか

編集:

たとえば、行にドロップダウンリストがあり、グリッドビューに特定の行がある場合です。次に、gridview行のdropdowlistが原因でポストバックが発生するgridviewrowindexが必要です。

4

1 に答える 1

19

RowDataBound次のRowIndexプロパティを使用して、行のインデックスを取得できます。

protected void gridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        int index = e.Row.RowIndex;
    }
}

GridViewの子コントロールのインデックスは、次の方法で取得できます。

  • childControl.NamingContainer=>
  • GridViewRow=>
  • RowIndex

たとえば、DropDownList.SelectedIndexChangedイベントで:

protected void DropDownList1_SelectedIndexChanged(Object sender, EventArgs e)
{
    DropDownList ddl = (DropDownList) sender;
    GridViewRow row  = (GridViewRow)  ddl.NamingContainer;
    int index        = row.RowIndex;
}

最後に: 「選択された行のインデックスを確認する」と述べたので、実際にそれ自体の選択された行のインデックスを探している場合は、GridViewこれだけのプロパティがあります。

于 2012-11-15T09:37:45.863 に答える