获取gridview中的下拉列表ID

时间:2014-09-23 13:44:03

标签: jquery asp.net ajax

在下面的代码我有一个gridview里面的下拉列表我想得到dropdown的id。在其中我得到对象引用错误。我尝试了下面的代码它在页面加载时抛出对象引用的错误。请帮我解决这个问题。

 $(document).ready(OnReady);

        function OnReady() {
           //Handle the change event for the drop down list
            $("#ddlLocation").change(onChange);
        }

        function onChange() {
            //create the ajax request
            $.ajax
            (
            {
                type: "POST", //HTTP method
                url: "NewIndent.aspx/OnContinentChange", //page/method name
                data: "{'continentName':'" + $("#<%=ddlLocation.ClientID%>").val() + "'}", //json to represent argument
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: callback,
                error: onError
            }
        );

        }

        //Handle the callback on success
        function callback(msg) {
            //it shows object object
             var val = msg.d;
             var countries = val.split(';');
             var length = countries.length;
             //var ID = gvProduct.DataKeys[e.Row.RowIndex]["ddlProduct"].ToString();
             document.getElementById('<%=gvProduct.FindControl("ddlProduct").ClientID%>').options.length = 0;
            // var Ier = gvProduct.DataKeys[e.Row.RowIndex]["ddlProduct"].ToString();
             var dropDown = document.getElementById('<%=gvProduct.FindControl("ddlProduct").ClientID%>');
            for (var i = 0; i < length - 1; ++i) {
                var option = document.createElement("option");
                option.text = countries[i];
                option.value = countries[i];

                dropDown.options.add(option);
            }
        }

        //Handle the callback on error
        function onError() {
            alert('something went wrong');
        }



 <asp:GridView Width="100%" runat="server" ID="gvProduct" AutoGenerateColumns="false" CellPadding="4" ForeColor="#333333" ShowFooter="true"
                            PageSize-Mode="NumericPages" PageSize="10" PagerStyle-Visible="true" AllowPaging="true" AllowSorting="true"                            
                            CssClass="mGrid" OnRowDataBound="gvProduct_RowDataBound" OnRowDeleting="gvProduct_RowDeleting"
                            PagerStyle-CssClass="pgr" AlternatingRowStyle-CssClass="alt">
<asp:TemplateField HeaderText="Product Name" ItemStyle-Width="350px">
                                    <ItemTemplate>
                                      <asp:DropDownList ID="ddlProduct" runat="server" OnSelectedIndexChanged="ddlProduct_SelectedIndexChanged"  AutoPostBack="true" Style="width: 100%; height:23px" ></asp:DropDownList>                                                                             


                                    </ItemTemplate>                                   
                                </asp:TemplateField>
  </asp:GridView>    

2 个答案:

答案 0 :(得分:0)

ddlProduct中的GridView排在一行。如果GridView中只有一行,则不会有一行ddlProduct,而是一大堆ddlProduct。他们都是不同的。您需要先获取您想要值为GridView的行。

通常table将客户端呈现为trtd和{{1}},因此您需要遍历DOM才能访问下拉列表。

答案 1 :(得分:0)

由于您已经在使用jquery,为什么不在您的下拉列表中附加一个类名称&amp;用它来选择你的下拉列表?这比为网格中的所有客户端ID生成脚本要容易得多。