2010-12-30 25 views
1

私はページング付きのASP .NET GridViewを持っています。その中の1列にはCheckBoxがあります。特定のシナリオでは、チェックされているチェックボックスのチェックを外したいと思います。 GridViewのページングでチェックボックスのチェックを外します

foreach (GridViewRow dr in gvMyGridView.Rows) 
{ 
    if (dr.RowType == DataControlRowType.DataRow) 
    { 
     if ((CheckBox)dr.FindControl("chkIsApplicable") != null) 
     { 
      ((CheckBox)dr.FindControl("chkIsApplicable")).Checked = false; 
     } 
    } 
} 
残念ながらページングのために現在グリッドに表示されているレコードにしかアクセスできません。私はそれをGridViewのすべてのアイテムに適用したい。これはクライアント側で発生し、ユーザーがコミットするとデータベースに保存されます。これを処理する方法はありますか? :)

+0

最終的にサーバー側またはクライアント側を処理しますか? –

+0

これらのチェックボックスは、ページインデックスを変更するまで実際には存在しないので、チェックすることはできません。私が提案するのは、ブール値を維持して、ユーザーがselect allをクリックしたときにtrueに設定することです。更新ボタンをクリックすると、この値をチェックして操作を実行できます。 – Pabuc

+0

@Jani: "Commit"ボタンを選択します。それが押されると、情報はDBに渡され、保存され/更新されます。 –

答えて

2

Maintaining the State of Checkbox while Paging in Gridview

ロジック

PageIndexChangingイベントでチェック行にリストに主キーを保存します。
グリッドを新しいPageIndexに設定してグリッドを再バインドした後、グリッドの行にマップされている値をリストに追加します(
)。リスト。
すべてをクリアするには、リストを削除します。

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

関連する問題