【发布时间】:2019-02-15 22:06:32
【问题描述】:
我的 gridview 第一列包含一个 tetxbox 和标签。第二列包含复选框。当用户单击“check_all”复选框时,应显示所有行的文本框。最初它被设置为不可见。标签也应该消失。 当用户点击每一行的单个复选框时,相应的文本框应该出现并且标签应该消失。如何使用 javascript 实现这一点?
<asp:TemplateField
HeaderText="Add Note"
itemstyle-horizontalalign="Center" >
<ItemTemplate>
<asp:Label ID="Label1"
runat="server"
Text='<%# Eval("notes") %>'>
</asp:Label>
<asp:TextBox ID="TextBox1"
runat="server"
Width="100px"
Text='<%# Eval("notes") %>'
Visible="false">
</asp:TextBox>
</ItemTemplate>
<HeaderStyle HorizontalAlign="Center"
VerticalAlign="Middle"
Width="60px"/>
<ItemStyle HorizontalAlign="Center"
Width="60px">
</ItemStyle>
</asp:TemplateField>
<asp:TemplateField HeaderStyle-HorizontalAlign="Center">
<HeaderTemplate>
<asp:CheckBox ID="check_all"
onclick="ShowHideChkBx(this)"
runat="server"
EnableViewState="true"
CssClass="gridcheckbox" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1"
onclick="ShowHideChkBx(this)"
runat="server" Checked="false" />
</ItemTemplate>
</asp:TemplateField>
Javascript 代码:
function ShowHideChkBx(ele) {
var GridView = document.getElementById('<%=GridView1.ClientID %>')
var checkBoxes = GridView.getElementsByTagName("input");
for (i = 1; i < GridView.rows.length; i++) {
}
if (ele.checked) { //to check all checkboxes when user clicks on check_all
for (var i = 1; i < checkBoxes.length; i++) {
if (checkBoxes[i].type == "checkbox") {
checkBoxes[i].checked = true;
}
if (checkBoxes[i].type == "text") {
checkBoxes[i].disabled = false;
}
}
}
else
{
for (var i = 1; i < checkBoxes.length; i++) {
if (checkBoxes[i].type == "checkbox") {
checkBoxes[i].checked = false;
}
}
}
}
【问题讨论】:
-
aspnet
Visible=false属性与style=display:none之类的前端css 不同。当可见性设置为 false 时,前端不存在 TextBox/ -
最初我不需要在前端显示 tetxbox。当用户点击复选框时需要通过js使其可见
-
这正是我的观点。如果可见性设置为 false,则无法使用 js 执行此操作。使用
<asp:TextBox style="display:none" Visible="true"。然后就可以用js展示了。 -
哦,好的。我将会。当用户单击复选框时,如何控制文本块和 javascript 上的标签?
标签: javascript asp.net gridview