获取Gridview检查项的列表

时间:2017-09-08 19:30:07

标签: javascript jquery asp.net gridview checkbox

我有一个动态GridView的学生,它依赖于数据库信息的行数

example of my page/table

我希望在按下按钮后,我会在阵列/列表中获得仅检查PersonID的列表。
我不知道如何编写这个JavaScript / jQuery函数。

CheckBox:

<asp:CheckBox CssClass="chk" ID="Checkbox" runat="server" Text='<%# Bind("PersonID") %>'></asp:CheckBox>

按钮:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="myClosure1()" />

JavaScript:

<script type="text/javascript">

function myClosure1() {
    $('.chk').each(function () {
        var chkbox = $(this).children('input').get(0);
        if (chkbox.checked) {

        }
    });
}

</script>

我不确定它是否进入$('.chk').each

编辑示例我上传的图片会发布数字1,2,4因为我检查了

2 个答案:

答案 0 :(得分:1)

对于这种情况,我将添加另一个隐藏的归档控件。然后渲染的输出将是这样的 -

<span class="chk">
   <input id="GridView1_Checkbox_0" type="checkbox" name="GridView1$ctl02$Checkbox">
      <label for="GridView1_Checkbox_0">1</label>
</span>
<input type="hidden" name="GridView1$ctl02$HiddenField1" 
      id="GridView1_HiddenField1_0" value="1">

ASP.NET复选框控件在span标记内呈现,因此您需要在jQuery中以.chk input的形式访问它们。

<button type="button" id="btnAll">Select All</button>
<asp:GridView ID="GridView1"
    AutoGenerateColumns="False"
    runat="server" DataKeyNames="PersonID">
    <Columns>
        <asp:BoundField DataField="PersonID" HeaderText="PersonID" />
        <asp:TemplateField>
            <ItemTemplate>
                <asp:CheckBox CssClass="chk" ID="Checkbox"
                    runat="server" Text='<%# Bind("PersonID") %>'></asp:CheckBox>
                <asp:HiddenField runat="server" ID="HiddenField1"
                    Value='<%# Bind("PersonID") %>' />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<div id="result"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript">
    var personIDs;
    $("#btnAll").click(function () {
        personIDs = []; // Clear data
        $(".chk input:checked").each(function () {
            // 'this' is a checkbox, so we need to go up to parent span tag.
            personIDs.push($(this).parent().next('input[type=hidden]').val());
        });
        $("#result").text(personIDs);
    });
</script>

答案 1 :(得分:0)

// Each row of the table
$("#table tr").each(function(){ 
        // get checkbox id and look for CheckStatus.
});