在多个选择中为给定行选择一个复选框 - jQuery

时间:2012-05-09 18:03:17

标签: asp.net

在下面的gridview中我有两个复选框 1)批准和2)拒绝
我的问题是:如何限制用户只选择批准或拒绝的给定行的一个复选框?不是两个。

  <asp:GridView ID="routePlanGridView" runat="server" AutoGenerateColumns="False" >        
            <Columns>          
             <HeaderTemplate>[Select All]<br />
                <asp:CheckBox ID="chkApproveAll" runat="server" onclick="SelectAll(this, '.selectapprove'); " />
            </HeaderTemplate>
             <asp:TemplateField HeaderText="approve">
                <ItemTemplate> 
                    <div class="selectreason">
                        <asp:CheckBox CssClass="selectme" ID="chkapprove" runat="server" Checked="false">
                        </asp:CheckBox>
                     </div>
                </ItemTemplate> 
            </asp:TemplateField>
            <asp:TemplateField HeaderText="reject">
 <HeaderTemplate>[Select All]<br />
                <asp:CheckBox ID="chkRejectAll" runat="server" onclick="SelectAll(this, '.selectreject'); " />
            </HeaderTemplate>

                <ItemTemplate> 
                    <div class="selectreason">
                        <asp:CheckBox CssClass="selectme" ID="chkreject" runat="server" Checked="false">
                        </asp:CheckBox>
                     </div>
                </ItemTemplate> 
            </asp:TemplateField>
            </Columns>
        </asp:GridView>

3 个答案:

答案 0 :(得分:1)

如果我了解您的表单如何工作,您应该使用单选按钮。它们的工作方式与您想要的完全一致。此外,它对您的用户更直观。

[编辑]

单选按钮有一个名为“name”的额外属性用于将它们分组

答案 1 :(得分:0)

使用单选按钮代替复选框。在项目创建事件后面的代码中找到单选按钮对象并为每行设置不同的组名。这样您就可以选择每行选项而不是每列。

答案 2 :(得分:0)

标记

<asp:GridView ID="routePlanGridView" runat="server" AutoGenerateColumns="False">
    <Columns>
        <headertemplate>[Select All]<br />
                <asp:CheckBox ID="chkApproveAll" runat="server" onclick="SelectAll(this, '.selectapprove'); " />
            </headertemplate>
        <asp:TemplateField HeaderText="approve">
            <ItemTemplate>
                <div class="selectreason">
                    <asp:CheckBox CssClass="selectme" onclick="return SelectSingle(this);" ID="chkapprove" runat="server" Checked="false">
                    </asp:CheckBox>
                </div>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="reject">
            <HeaderTemplate>
                [Select All]<br />
                <asp:CheckBox ID="chkRejectAll" runat="server" onclick="SelectAll(this, '.selectreject'); " />
            </HeaderTemplate>
            <ItemTemplate>
                <div class="selectreason">
                    <asp:CheckBox CssClass="selectme" ID="chkreject" runat="server" onclick="return SelectSingle(this);" Checked="false">
                    </asp:CheckBox>
                </div>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

<强> 的JavaScript

<script language="javascript" type="text/javascript">
    function SelectSingle(CtlId) {
        debugger;
        var chkreject, chkapprove;
        if (CtlId.id.indexOf('chkreject') > -1) {
            chkreject = document.getElementById(CtlId.id).checked;
            chkapprove = document.getElementById(CtlId.id.replace('chkreject', 'chkapprove')).checked;
        }
        else if (CtlId.id.indexOf('chkapprove') > -1) {
            chkapprove = document.getElementById(CtlId.id).checked;
            chkreject = document.getElementById(CtlId.id.replace('chkapprove', 'chkreject')).checked;
        }
        if (chkapprove == true && chkreject == true)
            alert('both checked');
        else
            alert('both not checked');
    }
 </script>