获取所有选中的元素和值到数组

时间:2011-02-07 17:54:52

标签: c# javascript checkbox

我有一个自定义的固定标头表元素。基本上它是如何工作的我设置了一个类,该类将根据从数据库返回的数据填充到该类型的类列表中。我希望每个返回的元素都有复选框,如果选中它将被添加到数组中。当用户选择“打印”时,我有逻辑将打印所选行的记录。我还在标题中为该列选择了所有选项。这是一个简单的例子:

|Name|ID|Product|Date|Select All 'checkbox'|
-----------------------------------------
|JonS|01|prodOne|Date|'checkbox'           |
|AmyA|02|prodTwo|Date|'checkbox'           |

当用户选择全选复选框时,我有以下javascript,它将选择/取消选中每个复选框元素。

function showHideAll() {
    if (document.getElementByID('AllCheckBox').checked == 1){
        $('.RowCheckBoxClass').attr('checked',true);
    }
    else {
        $('.RowCheckBoxClass').attr('checked',false);
    }
}

一切正常,一切都很好。底部有一个“打印”按钮。基本上我将它作为打印队列运行。选择所需的记录并点击打印,它将打印所选记录。我怎样才能找到所选的行?我需要选中行的ID复选框。在我的班级将是数据列表,我可以添加一个onclick函数。问题是,我不希望每次用户单击复选框时都回发,并且必须保留查询字符串。我只想获取复选框行的ID,并使用javascript或c#方法将其添加到数组中。

我正在考虑使用jscript方法扫描并查看检查了哪些框。但是,我仍然无法将这些添加到队列中。任何帮助或想法?

3 个答案:

答案 0 :(得分:1)

看起来你已经在使用jQuery了:

  var checkedIdList = [];
  $('.RowCheckBoxClass').each(function(_, cb) {
    if (cb.checked) {
      checkedIdList.push($(cb).closest('tr').find('td')[1].text());
    }
  });

如果“id”值是数字,那么您可能希望将文本转换为数字:

      checkedIdList.push(parseInt($(cb).closest('tr').find('td')[1].text(), 10));

答案 1 :(得分:0)

更好的方法是为所有选中的项添加一个类,并在复选框中添加一个类来存储ID。现在,当您尝试获取所有已检查的类时,使用选中的类调用all并加入所有ID。

<小时/> <击>

  function showHideAll() {
        if (document.getElementByID('AllCheckBox').checked == 1){
            $('.RowCheckBoxClass').attr('checked',true);
        }
        else {
            $('.RowCheckBoxClass').attr('checked',false);
        }
    }

<击> 可以简化为

function showHideAll() {
        $('.RowCheckBoxClass').attr('checked', $('#AllCheckBox').attr('checked'));
}

答案 2 :(得分:0)

要扫描页面并找到所有选中的行,您可以这样做(因为您已经使用了jQuery):

$(".RowCheckBoxClass:checked");