如果选中Checkbox,则获取Listview内的Label文本复选框和标签位于ListView控件中

时间:2015-03-30 14:04:46

标签: jquery asp.net

我有一个ListView在第一列中有两列我放置了CheckBox,在第二列中我放置了Label。现在,如果我点击任何复选框,我想要逗号(,)分隔标签文本列表。

我的listview html是

<asp:ListView ID="lsvSelectedFileds" runat="server">
<LayoutTemplate>
    <div>
        <div style="border-bottom: 1px solid #ffffff">REPORT FILEDS</div>
        <table>
            <tr>
                <td style="width: 20%;">Sel
                </td>
                <td style="width: 80%;">Field Name
                </td>
            </tr>
        </table>
        <div>
            <table>
                <tbody>
                    <tr id="itemPlaceholder" runat="server" />
                </tbody>
            </table>
        </div>
    </div>
</LayoutTemplate>
<ItemTemplate>
    <table>
        <tr>
            <td style="width: 20%; text-align: center;">
                <asp:CheckBox ID="chkSelectedField" runat="server" onclick="getText(this);"/>
            </td>
            <td style="width: 80%; text-align: left;">
                <asp:Label ID="lblFields" runat="server" Text='<%# Eval("FIELDNAME") %>'></asp:Label>
            </td>
        </tr>
    </table>
</ItemTemplate>

而jQuery是

<script type="text/javascript">
 function getText(ctrl) {
     try {
         var Fields = '';
         $("#<%=lsvSelectedFileds.ClientID%> tr").each(function() {
             var checkBox = $(this).find("input[type='checkbox']");
             var textBox = $(this).find('span[id*="lblFields"]').text();
             alert(checkBox);
             if ($(checkBox).is(':checked')) {

                 Fields += textBox.val();
             }
         });
         alert(Fields);
     } catch (e) {
         alert(e.message);
     }
 }

请帮帮我

1 个答案:

答案 0 :(得分:0)

我尝试一下你的情况,用基本的html替换一些asp数据,这就是我得到的:

function getText(ctrl) {
    try {
        var Fields = '';
        var totalChecked = $("ItemTemplate tr input[type='checkbox']:checked").length;
        var cpt = 0;
        $("ItemTemplate tr input[type='checkbox']:checked").each(function () {
            cpt++;
            var textBox = $(this).closest("tr").find('label').text();

            if (cpt == totalChecked) {
                Fields += textBox;
            } else {
                Fields += textBox + ",";
            }

        });
        alert(Fields);
    } catch (e) {
        alert(e.message);
    }
}
  

Working Demo