【问题标题】:get a list of Gridview checked items获取 Gridview 检查项目的列表
【发布时间】:2018-02-17 18:55:38
【问题描述】:

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

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

复选框:

<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,因为我检查了它们

【问题讨论】:

    标签: javascript jquery asp.net gridview checkbox


    【解决方案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 Checkbox 控件在 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>
    

    【讨论】:

    • 朋友,对不起,你理解错了,,,我希望在我按下一个按钮后,它会让我成为我检查的所有 PersonalID 号码的数组/警报。所以图片中的例子我上传了,他会制作数字 1,2,4 的数组,因为我会检查它们
    • 非常感谢...如果我真的不明白我将代码的第一部分(带有跨度)放在哪里......以及我如何使用隐藏字段?
    【解决方案2】:
    // Each row of the table
    $("#table tr").each(function(){ 
            // get checkbox id and look for CheckStatus.
    });
    

    【讨论】:

    • 问题因为 GridView 是动态的..我真的没有 ID ..(我不知道行数)
    • 请避免只转储代码。请添加有关您的答案的更多相关描述。
    猜你喜欢
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多