1

ページング機能を備えたASP.NETGridViewがあります。その中の1つの列にはチェックボックスがあります。あるシナリオでは、チェックされているチェックボックスをオフにしたい。

foreach (GridViewRow dr in gvMyGridView.Rows)
{
    if (dr.RowType == DataControlRowType.DataRow)
    {
        if ((CheckBox)dr.FindControl("chkIsApplicable") != null)
        {
            ((CheckBox)dr.FindControl("chkIsApplicable")).Checked = false;
        }
    }
}  

ただし、残念ながら、ページングのため、この方法でアクセスできるのは現在グリッドに表示されているレコードのみです。GridViewのすべてのアイテムに適用したい。これはクライアント側で発生するはずであり、ユーザーがコミットするとデータベースに保存されます。これを処理する方法はありますか?:)

4

1 に答える 1

2

Gridviewでページングしている間、チェックボックスの状態を維持する

ロジック

チェックされた行の主キーをPageIndexChangingイベントのリストに保存します。
グリッドを新しいPageIndexに設定し、グリッドを再バインドした後、グリッド内の行にマップされているリスト内の値を新しいページに入力します(存在する場合)
。これにより、リスト内のチェックされた行のコレクションが作成されます。
リストを削除してすべてをクリアします。

これはそれを行う1つの方法です。
PS:2年前の投稿なので、C#4.0で確実に最適化できます

于 2010-12-30T12:08:38.687 に答える