如何使用jquery计算gridview所有页面中的选中复选框?

时间:2009-01-14 19:08:30

标签: asp.net jquery gridview checkbox

我想立即更新状态行,指示asp.net gridview所有页面中已选中复选框的数量。现在我只能巧妙地计算当前gridview页面上检查的复选框的数量。

这是我的代码:

$(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();
      }

}

5 个答案:

答案 0 :(得分:0)

您可以在页面更改时跟踪viewstate(或类似内容)中的总选择。我做了类似的事情跟踪数组中选定的行ID。在我的情况下,我必须在他们返回页面时重新检查项目。此外,如果您允许排序,则选择可能会跨页面移动。

编辑:对不起,这实际上不是你的Jquery问题,但也许它会有所帮助......

答案 1 :(得分:0)

我正在使用视图状态来跟踪所有页面上的所有已检查项目,并在返回页面时重新检查它们。

我必须将viewstate值添加到页面总数中,然后以某种方式减去重叠总数。由于我的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;

答案 2 :(得分:0)

您缺少的是删除ID。检查行和tempid时,请确保它不在saveids中。

答案 3 :(得分:0)

你知道Google是你的朋友吗?

Selecting CheckBoxes Inside GridView Using JQuery

The WML Video

没有JQuery但是为了更完美的行为(如下图所示),try this link

alt text http://www.gridviewguy.com/ArticleImages/GridViewCheckBoxTwistAni.gif

答案 4 :(得分:0)

在页面上保留一个隐藏的文本字段,每次勾选一个框时,调用一个javascript方法,将复选框的“id”写入隐藏字段。每次回发页面时,将隐藏字段的值序列化为所需对象结构中的会话(对象,哈希表,数组等)。

在呈现页面时,每个复选框都可以检查会话对象结构(您之前创建的),并确定是否最后一次检查了复选框的状态。

如果选中该复选框,您可以使用JQuery遍历页面上的所有复选框并递增计数器。