Asp.net动态gridview与下拉列表

时间:2011-03-29 12:54:38

标签: javascript jquery asp.net gridview dynamic

我有一个动态(允许动态添加行)一个ASP gridview,它的一个列中有一个下拉列表。我希望根据数据输入期间下拉列表中的选择,启用/禁用列中的文本框。

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:3)

您可以使用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”类的文本框,然后相应地启用/禁用。

答案 1 :(得分:1)

如果你熟悉它,你可以使用Javascript。我推荐使用JQuery,因为它是一种用于遍历DOM的查询语言。

但是如果您不熟悉Javascript,那么我建议您在DropDownList中添加SelectionChangedEvent,然后在SelectionChangedEvent处理程序中为您的页面添加代码: 将sender对象转换为DropDownList,然后获取该对象的父级,即GridViewRow。

使用GridViewRow,您可以使用FindControl方法获取对同一行中TextBox的引用,然后您可以启用它或禁用它。

如果您不想每次更改下拉列表中的选项时页面刷新(回发后),请将网格包装在UpdatePanel中。

如果您对此感到困难,请告诉我,我会将代码发布到上述解决方案之一。请告诉我你最熟悉哪一个。