我有一个动态的(允许动态添加行) ASP网格视图,它的一列中有一个下拉列表。我想在数据输入期间根据下拉列表中的选择启用/禁用列中的文本框。
任何帮助都将受到高度的感谢。
发布于 2011-03-29 22:24:21
您可以使用jQuery轻松完成此操作。只需稍加修改,您就可以让它完全按照您希望的方式工作。
首先,将以下内容添加到您的<head>标记:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$(".ddlClass").change(function () {
var txt = $(this).closest("tr").find(".txtClass");
if ($(this).val() == 0) {
txt.css("background", "#cccccc");
txt.attr("disabled", "disabled");
}
else {
txt.css("background", "#ffffff");
txt.attr("disabled","");
}
});
});
接下来,创建您的网格视图,并为您的文本框和下拉列表添加模板列。在下面的代码中,请注意下拉列表被赋予了类"ddlClass“,文本框被赋予了类"txtClass”。您可以根据需要更改这些设置。
<asp:gridview runat="server" ID="gvw" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="field1" />
<asp:BoundField DataField="field2" />
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:TextBox runat="server" ID="txtName" CssClass="txtClass"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<select class="ddlClass">
<option value="1">Enabled</option>
<option value="0">Disabled</option>
</select>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:gridview>.ready函数将一个单击事件附加到每个带有"ddlClass“类的下拉列表中。更改后,代码将在与下拉列表相同的行中找到类为"txtClass“的文本框,然后相应地启用/禁用。
发布于 2011-03-29 21:30:20
如果你熟悉Javascript,你可以使用Javascript。我推荐使用JQuery,因为它是一种遍历DOM的查询语言。
但是,如果您不熟悉Javascript,那么我建议您在DropDownList上添加一个SelectionChangedEvent,然后在SelectionChangedEvent处理程序中为您的页面添加代码:将发送者对象强制转换为DropDownList,然后获取该对象的父对象,即GridViewRow。
使用该GridViewRow,您可以使用FindControl方法在同一行中获取对TextBox的引用,然后您可以启用或禁用它。
如果你不喜欢每次他们改变你下拉列表中的选择时页面刷新(回发),那就用UpdatePanel包住你的网格。
让我知道,如果你有一个困难的时间,我会张贴代码到上述解决方案之一。只要让我知道你最喜欢哪一个。
https://stackoverflow.com/questions/5472828
复制相似问题