在下面的代码我有一个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>
答案 0 :(得分:0)
ddlProduct
中的GridView
排在一行。如果GridView
中只有一行,则不会有一行ddlProduct
,而是一大堆ddlProduct
。他们都是不同的。您需要先获取您想要值为GridView
的行。
通常table
将客户端呈现为tr
,td
和{{1}},因此您需要遍历DOM才能访问下拉列表。
答案 1 :(得分:0)
由于您已经在使用jquery,为什么不在您的下拉列表中附加一个类名称&amp;用它来选择你的下拉列表?这比为网格中的所有客户端ID生成脚本要容易得多。