0

グリッドビューがあり、それにSelectedIndexChangedイベントがあります...

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    GridViewRow Row = GridView1.SelectedRow;

    //do some stuff
}

するとエラーが出ます...

インデックスが範囲外でした。負ではなく、コレクションのサイズより小さくなければなりません。パラメータ名:インデックス

Gridview がページロードにバインドされている理由がわかりません。しかし、ポストバックではありません...

if (!IsPostBack)
{
    GridView1.DataSource = UserAccounts;
    GridView1.DataBind();
}
4

2 に答える 2

3

asp.netDataSourceコントロールはこれを自動的に処理しますが、手動で をバインドする場合GridViewは、 にもバインドする必要がありますPostBack。フィルターなどに基づいてデータ ソースに変更を加えた場合は、再バインドする必要があります。

于 2012-11-15T16:48:11.690 に答える
1

最初のこと: サーバーにポストバックすると、GridView1.DataSource が以前のデータを失うように GridView1 が再初期化されます。

if (!IsPostBack)
{
        GridView1.DataSource = UserAccounts;
        GridView1.DataBind();
}

2 つ目: GridView をカスタム DataTable、List に手動でバインドする場合は、特定の DataKey を使用して RowCommand を実装する必要があります。

この記事をご覧くださいhttp://aspspirits.blogspot.com/2012/08/how-to-get-rowindex-of-aspnet-gridview.html

于 2012-11-15T16:54:58.603 に答える