禁用复选框已更改事件的表行

时间:2013-08-26 07:08:36

标签: c# asp.net checkbox

我想在选中其中的复选框时禁用<tr>元素中的所有元素。我的代码如下:

<tr>
    <td style="width:25px" id="td_CheckBoxClickable">
        <asp:CheckBox runat="server" ClientIDMode="Static" ID="CheckBox_EnableRow" OnCheckedChanged="CheckBox_EnableRow_CheckedChanged" />
    </td>
    <td>
        <asp:TextBox runat="server" ID="textBox_Count" />
    </td>
    <td>
        <asp:TextBox runat="server" ID="textBox_Value" />
    </td>
</tr>

目前CheckBox_EnableRow_CheckedChanged事件为空。

我原以为可以查看复选框的父级的父级,如下所示:

protected void CheckBox_EnableRow_CheckedChanged(object sender, EventArgs e) {
    TableRow row = (TableRow)((CheckBox)sender).Parent.Parent;
    row.Enabled = false;
}

但这似乎不起作用。

3 个答案:

答案 0 :(得分:2)

我建议使用jquery。使用jquery,您可以找到复选框的父tr元素,然后将tr元素中所有输入元素的属性更改为disabled = true。首先你必须给tr一个类,比如class =“trclass”,然后你必须获得复选框的父tr。

html部分:

<input id="Checkbox1" type="checkbox" onchange="DsiableRow(this)" />

javascript部分:

function DsiableRow(MyCHeckbox)
{
   var trElement = $(MyCHeckbox).parents(".trclass");
   $("trElement  :input").attr("disabled", true);
}

答案 1 :(得分:1)

我会这样解决:

<input id="theCheckBox" type="checkbox" onchange="DisableRow(this)" />

function DisableRow(checkBox)
{
   var $trElement= $(checkBox).closest("tr");
   $trElement.find("input").attr("disabled", "disabled");
}
  

HTML和XHTML之间的差异
  在XHTML中,禁止属性最小化,并且必须将disabled属性定义为。
   来源 http://www.w3schools.com/tags/att_input_disabled.asp

另请注意,如果您在浏览器中使用默认提交方法,则:

  

提示:不会提交表单中的已禁用元素    来源 http://www.w3schools.com/tags/att_input_disabled.asp

答案 2 :(得分:0)

使用javascript获取<tr>并将其设为display:none