我想在用户控件(ACSX页面)中选中复选框时禁用文本框。这些控件位于gridview中。
<div>
<asp:GridView ID="gvModifOuvrageNonControles" runat="server" AutoGenerateColumns="false" SkinID="MarionGridView">
<Columns>
<asp:TemplateField HeaderText="NO CONTROL">
<ItemTemplate>
<asp:CheckBox ID="cbInspection" OnClick="grisé(this);" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="RAISON">
<ItemTemplate>
<asp:TextBox ID="txtCause" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
function grisé(obj) {
alert(obj.getAttribute('id'));
}
答案 0 :(得分:1)
我假设此网格有3列,即2个Template字段和1个BoundField,因为在抓取文本框时将需要它。.
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="gvModifOuvrageNonControles" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:TemplateField HeaderText="NO CONTROL">
<ItemTemplate>
<asp:CheckBox ID="cbInspection" OnClick="grisé(this);" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="RAISON">
<ItemTemplate>
<asp:TextBox ID="txtCause" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
<script>
//all disabled at first..
(function () {
debugger;
var gvDrv = document.getElementById("<%=gvModifOuvrageNonControles.ClientID %>");
for (i = 1; i < gvDrv.rows.length; i++) {
var cell = gvDrv.rows[i].cells[2];
cell.firstElementChild.disabled = true
}
})();
function grisé(obj) {
debugger;
var rowData = obj.parentNode.parentNode;
if (obj.checked) {
rowData.cells[2].firstElementChild.disabled = false
}
else {
rowData.cells[2].firstElementChild.disabled = true;
}
}
</script>
</form>
</body>
--------------- code behind ----------------
if (!IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID");
for (int i = 0; i < 10; i++)
{
var r = dt.NewRow();
r["ID"] = i;
dt.Rows.Add(r);
}
gvModifOuvrageNonControles.DataSource = dt;
gvModifOuvrageNonControles.DataBind();
}
答案 1 :(得分:0)
您必须做的第一件事就是将复选框的PostBack属性设置为true。
然后,您必须遍历gridview的项目模板,并使用FindControl方法找到该复选框。
一旦找到复选框控件,则需要为该复选框创建一个事件处理程序,并在选中该复选框后,再次使用FindControl方法,在gridview中查找文本框并执行操作。
这是在您的用户控件后面的代码中完成的。这是一种更清洁的方法,而不是尝试只为一个动作编写一个庞大的脚本。
请注意,我不在PC上,因此无法提供代码示例。