[英]Asp.net dynamic gridview with dropdownlists
我有一个动态(允许动态添加行)一个ASP gridview,它的一个列中有一个下拉列表。 我希望根据数据输入期间下拉列表中的选择,在列中启用/禁用文本框。
任何帮助将受到高度赞赏。
您可以使用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","");
}
});
});
接下来,创建gridview并为文本框和下拉列表添加模板列。 在下面的代码中,请注意下拉列表已被赋予类“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函数将click事件附加到具有类“ddlClass”的每个下拉列表。 更改后,代码将在下拉列表的同一行中找到类“txtClass”的文本框,然后相应地启用/禁用。
那么你可以使用Javascript,如果你熟悉它。 我推荐使用JQuery,因为它是一种用于遍历DOM的查询语言。
但是如果您不熟悉Javascript,那么我建议您在DropDownList上添加SelectionChangedEvent,然后在SelectionChangedEvent处理程序中为您的页面添加代码:将发送方对象转换为DropDownList,然后获取该对象的父级,这将是GridViewRow。
使用GridViewRow,您可以使用FindControl方法获取对同一行中TextBox的引用,然后您可以启用它或禁用它。
如果您不希望页面刷新(回发后)每次更改下拉列表中的选择,则将网格包装在UpdatePanel中。
如果您对此感到困难,请告诉我,我会将代码发布到上述解决方案之一。 请告诉我您最熟悉哪一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.