在JavaScript中更新'asp:DropDownList'的'启用'

时间:2016-08-01 09:23:40

标签: javascript html asp.net

我有2个DropDownLists,我试图将第二个切换为Enable = true,当在第一个DropDownList中我选择了选项号2时。

当我在VS上运行代码时,收到此错误: “JavaScript运行时错误:无法设置未定义或空引用的属性'setAttribute'”

<script language="javascript">
    function Test(ddlId) {

        var ControlName = document.getElementById(ddlId.id);
        if (ControlName.value == 2) {
            alert("good");
            document.getElementById("ddlActivitiesParams2").setAttribute("Enable", true);
            //document.getElementById("ddlActivitiesParams2").disabled = true;
        }
    }
</script>
<asp:TemplateColumn HeaderText="Param1">
    <HeaderStyle Width="25%"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center" Width="25%"></ItemStyle>
    <ItemTemplate>
        <asp:Label ID="lblParam1Desc" runat="server" Text='' Width="90%" />
    </ItemTemplate>
    <FooterTemplate>
        <asp:DropDownList ID="ddlAgentParams" onchange="Test(this);" DataValueField="Value" DataTextField="Text" DataSource=' <%# GetThresholdsAgentTypeParams() %> ' runat="server" Width="90%">
        </asp:DropDownList>
    </FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Param2">
    <HeaderStyle Width="25%"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center" Width="25%"></ItemStyle>
    <ItemTemplate>
        <asp:Label ID="lblParam2Desc" runat="server" Text='aaa' Width="90%" />
    </ItemTemplate>
    <FooterTemplate>
        <asp:DropDownList ID="ddlActivitiesParams2" Enabled="false" Visible="true" DataValueField="Value" DataTextField="Text" DataSource=' <%# GetActivities() %> ' runat="server" Width="90%">
        </asp:DropDownList>
    </FooterTemplate>
</asp:TemplateColumn>

2 个答案:

答案 0 :(得分:2)

您正在寻找错误的ID。 ASP.Net客户端ID&S将在运行时更改。您无法在选择器中使用服务器端块,因为您尝试访问的控件位于另一个控件中。

由于你的ddl是一个页脚模板,我假设它们只有一个。如果这是真的并且您正在使用支持它的ASP.Net版本,则可以将属性ClientIDMode="static"放在ddl上,并且ID不会在运行时更改。

否则,您可能只想在下拉列表中添加一个唯一的cssclass,并根据类而不是ID选择它。

答案 1 :(得分:0)

通常情况下容器会在渲染过程中更改控件的ID。 在返回的HTML上执行查看源并检查创建的select元素的id是什么