无法获取动态填充的asp:dropdownlist的ID

时间:2013-09-10 22:21:07

标签: c# javascript asp.net

我有一个未填充的列表,可以填充。

<asp:DropDownList ID="ddlState" runat="server" style="margin-left: 81px" 
    onselectedindexchanged="ddlState_SelectedIndexChanged"   
    CssClass="styled-select">
</asp:DropDownList>

 <asp:DropDownList ID="ddlManagerName"  runat="server" Height="22px" 
    style="margin-left: 08px; width:auto;" ></asp:DropDownList>

和一个javascript运行以获取按钮上的id

function validateDynamic() {

    var getState = document.getElementById('<%=ddlState.ClientID %>').selectedIndex;
    var getManager = document.getElementById('<%=ddlManagerName.ClientID %>').selectedIndex;
    if(getState == 0)
    { 
        alert("State is a required field !");

    }

    if(getManager == 0)
    { 
        alert("Manager Name is a required field !");

    }

    return false;
}

我在视图来源

中使用了以下内容

name =“ctl00 $ MainContent $ ddlState”id =“MainContent_ddlState”name name和id以及我得到的所有对象都是未定义的。

这是调用函数的按钮代码

  <asp:Button id="btnSaveTM" runat="server" Text="Add Team Member" class="btn"   onmouseover="this.className='btn btnhov'"
   onmouseout="this.className='btn'" style=" Height:34px" OnClientClick="validateDynamic();"
    onclick="btnSaveTM_Click" UseSubmitBehavior="true" CausesValidation="true"   />

当我调试时,我将getState和manager视为未定义。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

使用它来获取DropdownList的选定值:

var getState = (document.getElementById('<%= ddlState.ClientID %>')  
                     .options[document.getElementById("<%=ddlState.ClientID%>") 
                     .selectedIndex].value)

答案 1 :(得分:0)

你看过服务器返回的源代码了吗?脚本中的ID是否与渲染元素的ID匹配?此外,像<%=ddlState.ClientID %>这样的代码块也无法在外部脚本文件中运行。要让它们工作,您必须在页面上嵌入脚本。它们只能与.aspx文件一起使用。 您也可以尝试在控制台上获取元素(如Chrome DevTools)。如果您返回了正确的元素,则可以将其与脚本中的行进行比较。