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;
}
}
}
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;
}
}
}
{
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;
}
}
这个方法,在画面打开并且CheckboxOK.Checked=true,CheckboxCritical.enable=false的情况,不好用
<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>