1

我想立即更新一个状态行,指示在 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();
      }

}
4

5 回答 5

0

您可以在页面更改时跟踪视图状态(或类似内容)中的总选择。我做了类似的事情来跟踪数组中选定的行 ID。就我而言,当它们返回页面时,我必须重新检查这些项目。此外,如果您允许排序,则选择可能会跨页面移动。

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

于 2009-01-14T19:16:23.230 回答
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 回答
0

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

于 2009-01-14T20:56:41.140 回答
0

你知道谷歌是你的朋友吗?

使用 JQuery 在 GridView 中选择复选框

WML 视频

如果没有 JQuery,但对于更完美主义的行为(如下图),试试这个链接

替代文字 http://www.gridviewguy.com/ArticleImages/GridViewCheckBoxTwistAni.gif

于 2009-01-14T22:34:44.483 回答
0

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

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

您可以使用 JQuery 循环浏览页面上的所有复选框,如果选中该复选框,则增加一个计数器。

于 2009-01-14T23:54:40.250 回答