0

在下面的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>
4

3 回答 3

1

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

[编辑]

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

于 2012-05-09T18:13:00.207 回答
0

使用单选按钮而不是复选框。在项目创建事件背后的代码中,找到单选按钮对象并为每行设置不同的组名。这将允许您选择每行而不是每列的选项。

于 2012-05-09T18:09:44.403 回答
0

Mark Up

<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>
于 2012-05-09T20:41:27.003 回答