gridview中,有4个checkbox,如果选择OK, 就要使Critical变成disabled,用javascript已经实现(如下),并在onrowdatabound时,从数据库取值得时候,如果checkboxOK ==true, 如何将checkboxCritical的disable set false,
ASPX
<script type="text/javascript" language="javascript">
function StatusGridCheckbox(CheckCritical)
{
  document.getElementById(CheckCritical).disabled= !document.getElementById(CheckCritical).disabled;
            
}
</script>
<asp:GridView ID="GridView1" CssClass="table" PageSize="50" runat="server" AutoGenerateColumns="False"
                       OnRowDataBound="GridView1_RowDataBound">
 <PagerStyle ForeColor="Black" HorizontalAlign="Left" BackColor="#FFFFCC" BorderStyle="None"
                            BorderWidth="0px" VerticalAlign="Middle"></PagerStyle>
 <HeaderStyle Font-Bold="True" Font-Names="Verdana" Font-Size="8pt" ForeColor="White"
                            BackColor="#1E3692" Font-Underline="False" Height="10px" Wrap="True" HorizontalAlign="Center"
                            VerticalAlign="Middle" />
                        <Columns>
                            <asp:TemplateField HeaderText="ID">
                                <ItemTemplate>
                                    <%# ((GridViewRow)Container).RowIndex + 1%>
                                    <asp:HiddenField ID="hdCheckID" runat="server" Value='<%# Eval("CheckID") %>' />
                                    <asp:HiddenField ID="hdShowType" runat="server" Value='<%# Eval("ShowType") %>' />
                                </ItemTemplate>
                                <ItemStyle Width="2%" />
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Check Item">
                                <ItemTemplate>
                                    <asp:Label ID="lblCheckName" runat="server" Text='<%# Eval("CheckItemName") %>' ToolTip='<%# Eval("CheckItemToolTip") %>' />
                                </ItemTemplate>
                                <ItemStyle Width="28%" />
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="OK">
                                <ItemTemplate>
                                    <asp:CheckBox ID="lblCheckOK" Visible='<%# !(bool) IsInEditMode %>' runat="server"
                                        Checked='<%# Eval("CheckOK")==DBNull.Value?false:Eval("CheckOK") %>' />
                                    <asp:CheckBox ID="txtCheckOK" Visible='<%# IsInEditMode %>' runat="server" Checked='<%# Eval("CheckOK")==DBNull.Value?false:Eval("CheckOK") %>' />
                                </ItemTemplate>
                                <ItemStyle Width="2%" />
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="O">
                                <ItemTemplate>
                                    <asp:CheckBox ID="lblCheckOptional" Visible='<%# !(bool) IsInEditMode %>' runat="server"
                                        Text='<%# Eval("CheckOptional") %>' />
                                    <asp:CheckBox ID="txtCheckOptional" Visible='<%# IsInEditMode %>' runat="server"
                                        Checked='<%# Eval("CheckOptional")==DBNull.Value?false:Eval("CheckOptional") %>' />
                                </ItemTemplate>
                                <ItemStyle Width="2%" />
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="X">
                                <ItemTemplate>
                                    <asp:CheckBox ID="lblCheckCritical" Visible='<%# !(bool) IsInEditMode %>' runat="server"
                                        Text='<%# Eval("CheckCritical") %>' />
                                    <asp:CheckBox ID="txtCheckCritical" Visible='<%# IsInEditMode %>' runat="server"
                                        Checked='<%# Eval("CheckCritical")==DBNull.Value?false:Eval("CheckCritical") %>' />
                                </ItemTemplate>
                                <ItemStyle Width="2%" />
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="UR">
                                <ItemTemplate>
                                    <asp:CheckBox ID="lblCheckUserRequest" Visible='<%# !(bool) IsInEditMode %>' runat="server"
                                        Text='<%# Eval("CheckUserRequest") %>' />
                                    <asp:CheckBox ID="txtCheckUserRequest" Visible='<%# IsInEditMode %>' runat="server"
                                        Checked='<%# Eval("CheckUserRequest")==DBNull.Value?false:Eval("CheckUserRequest") %>' />
                                </ItemTemplate>
                                <ItemStyle Width="2%" />
                            </asp:TemplateField>                        </Columns>
                        <PagerSettings Visible="False" />
                    </asp:GridView>
CS protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
 
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
           if (txtCheckOK.Checked == true)
            {                
                txtCheckCritical.Enabled = false;
            }
            if (txtCheckCritical.Checked == true)
            {
                txtCheckOK.Enabled = false;
               
            }
       }
}

解决方案 »

  1.   

    你查看生成的html源码可以得知,当CheckBox的Enabled被设为false时,编译器会在生成的checkbox外面加了一层span,所以被disabled的其实是span,RowDataBound事件中的代码你可以不用修改了,尝试下把js改一下:function StatusGridCheckbox(CheckCritical)
    {
      var cb = document.getElementById(CheckCritical);
      var p = cb.parentElement || cb.parentNode;
      if(p != null && p.tagName.toLowerCase() == "span") {
          p.disabled = !p.disabled;
      }
      else {
          cb.disabled = !cb.disabled;
      }

      

  2.   

    打开画面,checkboxOK已经Checked,点击checkboxOK,将其设置成Unchecked,希望CheckboxCritical的disable=false,怎么办
      

  3.   


    这个方法,在画面打开并且CheckboxOK.Checked=true,CheckboxCritical.enable=false的情况,不好用
      

  4.   

    HTML
    <td style="width:2%;">
                                        
                                        <input id="GridView1_ctl02_txtCheckOK" type="checkbox" name="GridView1$ctl02$txtCheckOK" checked="checked" onclick="javascript:StatusGridCheckbox('GridView1_ctl02_txtCheckCritical');" />
                                    </td>
    <span disabled="disabled"><input id="GridView1_ctl02_txtCheckCritical" type="checkbox" name="GridView1$ctl02$txtCheckCritical" disabled="disabled" onclick="javascript:StatusGridCheckbox('GridView1_ctl02_txtCheckOK');" /></span>