从JavaScript中的DetailsView访问DropDownList

时间:2017-11-22 04:06:56

标签: javascript asp.net detailsview

我有一个名为DetailsView1的DetailsView如下,其中DropDownList名为SupplierDD,CheckBox名为ApprovedCB。

<asp:DetailsView ID="DetailsView1 " runat="server" Width="70%" AutoGenerateRows="False" DataKeyNames="ID" DataSourceID="DetailsViewDS " 
             DefaultMode="Edit">
            <Fields>
                <asp:TemplateField HeaderText="Supplier">
                    <EditItemTemplate>
                         <asp:DropDownList runat="server" ID="SupplierDD"/>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Approved" SortExpression="ApprovedForOrderFromSupplier">
                    <EditItemTemplate>
                         <asp:CheckBox runat="server" ID="ApprovedCB" OnClick="return CheckIfSupplierIsSelected(this);" Checked='<%# Bind("ApprovedForOrderFromSupplier") %> />
..................

我有以下的JavaScript代码

<script type="text/javascript">
    function CheckIfSupplierIsSelected(cb) {
        var detailsView = document.getElementById('<%= DetailsView1.ClientID %>');       
        var supplierDD1 = detailsView.getElementById('<%= SupplierDD.ClientID %>');
        //var supplierDD2 = detailsView.child.getElementById('<%= SupplierDD.ClientID %>'); //have tried this way too
        if (cb.checked === true) {
            alert("checked");
            return true;
        } else {
            alert("unchecked");
            return true;
        }
   }
</script>

我得到的错误是当前上下文中不存在SupplierDD这个名称。任何人都可以帮助我知道如何在JavaScript中声明新的SupplierDD。我已经尝试了几种方法,正如您在JavaScript中可以看到的那样,以获得SupplierDD。我显然对Checkbox没有问题,因为它是通过CheckBox中的JavaScript方法调用传递的。

1 个答案:

答案 0 :(得分:0)

而不是使用以下行 -

var supplierDD1 = detailsView.getElementById('<%= SupplierDD.ClientID %>');

尝试使用jQuery find selector -

var supChk = detailsView.find('<%= SupplierDD.ClientID %>');