1

asp.net グリッドビューのすべてのページでチェックされているチェックボックスの数を示すステータス ラインを即座に更新したいと考えています。現在、現在のグリッドビュー ページでチェックされているチェックボックスの数を数えることしかできません。

これが私のコードです:

$(document).ready(initAll);

function initAll(){
   countChecked();
    $(".activeBoxes").click(countChecked);
}

function countChecked() {

      var n = $(".activeBoxes input:checked").length;
      $("#checkboxStatus").text(n + (n == 1 ? " vehicle is" : " vehicles are") + " selected on this page.  ");
      if( n == 0){
           $(".activateButton").hide();
           $("#checkboxStatus").hide();

      }else{
        $("#checkboxStatus").show();
        $(".activateButton").show();
      }

}
4

5 に答える 5

0

ページ変更時にビューステート(または同様のもの)で選択全体を追跡できます。配列内の選択された行IDを追跡するのと同様のことを行いました。私の場合、ページに戻ったときにアイテムを再確認する必要がありました。さらに、並べ替えを許可すると、選択範囲がページ間を移動する場合があります。

編集:申し訳ありませんが、これは実際にはJqueryの質問ではありませんが、おそらく役立つでしょう...

于 2009-01-14T19:16:23.230 に答える
0

Googleがあなたの友達であることを知っていますか?

JQueryを使用したGridView内のチェックボックスの選択

WMLビデオ

そして、JQueryなしで、より完璧主義的な振る舞い(下の画像のように)については、このリンクを試してください

代替テキストhttp://www.gridviewguy.com/ArticleImages/GridViewCheckBoxTwistAni.gif

于 2009-01-14T22:34:44.483 に答える
0

欠けているのはIDを削除することです。行をチェックし、tempid がチェックされていない場合は、saveid に含まれていないことを確認してください。

于 2009-01-14T20:56:41.140 に答える
0

ページに非表示のテキスト フィールドを保持し、ボックスをチェックするたびに、チェックボックスの「ID」を非表示フィールドに書き込む JavaScript メソッドを呼び出します。ページをポストバックするたびに、目的のオブジェクト構造 (オブジェクト、ハッシュ テーブル、配列など) で非表示フィールドの値をセッションにシリアル化します。

ページのレンダリング時に、各チェックボックスはセッション オブジェクト構造 (以前に作成したもの) をチェックし、チェックボックスの状態が最後にチェックされたかどうかを判断できます。

JQuery を使用して、ページ上のすべてのチェックボックスをループし、チェックボックスがオンになっている場合はカウンターをインクリメントできます。

于 2009-01-14T23:54:40.250 に答える
0

ビューステートを使用して、すべてのページでチェックされたすべてのアイテムを追跡し、ページに戻ったときにそれらを再チェックしています。

ビューステートの値をページの合計に追加し、何らかの方法で重複する合計を差し引く必要があります。私の jquery には ID が含まれていないため、これは注意が必要です。

protected ArrayList savedIds;
 if (ViewState["SavedIds"] == null) savedIds = new ArrayList();
        else savedIds = (ArrayList)ViewState["SavedIds"];

List<int> activateList = new List<int>();

        foreach (GridViewRow tt in GridView2.Rows)
        {
            CheckBox cb = (CheckBox)tt.FindControl("ActivateItem");
            HiddenField id = (HiddenField)tt.FindControl("IdField");
            if (cb.Checked)
            {
                int tempId = 0;
                string tempId2 = id.Value.ToString();
                int.TryParse(tempId2, out tempId);
                activateList.Add(tempId);
            }

        }
        foreach (int activateId in activateList)
        {
            if (!savedIds.Contains(activateId.ToString())) savedIds.Add(activateId.ToString());
        }
        ViewState["SavedIds"] = savedIds;
于 2009-01-14T19:38:40.860 に答える