asp.net javascript对象引用未设置为对象的实例
我的英语说得不是很好。告诉问题。net页面,从数据库获取数据的javascript代码。我将它们添加到下拉列表中。当我运行此命令时,我想在按下按钮时从选定的DropDownList选择中检索数据。asp.net,但我认为它作为DropDownList的一部分是空的。我能做什么。等待帮助。谢谢 代码 aspx.cs----------------asp.net javascript对象引用未设置为对象的实例,javascript,asp.net,ajax,Javascript,Asp.net,Ajax,我的英语说得不是很好。告诉问题。net页面,从数据库获取数据的javascript代码。我将它们添加到下拉列表中。当我运行此命令时,我想在按下按钮时从选定的DropDownList选择中检索数据。asp.net,但我认为它作为DropDownList的一部分是空的。我能做什么。等待帮助。谢谢 代码 aspx.cs---------------- <script language="javascript" type="text/javascript"> function Ge
<script language="javascript" type="text/javascript">
function GetDataCity() {
var response;
Ajax_CSharp.GetDataCity(GetData_CallBackCity);
}
function GetData_CallBackCity(response) {
var response = response.value;
if (response == "Empty") {
alert("no record");
}
else if (response == 'Error') {
alert("database not connection");
}
else {
var arr = response.split("~");
var cityID = arr[0].split(",");
var cityName = arr[1].split(",");
document.getElementById('ddlistCity').length = 0;
var o = document.createElement("option");
o.value = "select";
o.text = "select";
document.getElementById('ddlistCity').add(o);
for (var i = 0; i < cityID.length; i++) {
var o = document.createElement("option");
o.value = cityID[i];
o.text = cityName[i];
document.getElementById('ddlistCity').add(o);
}
}
}
</script>
</head>
<body onload="GetDataCity();">
<form id="form1" runat="server" >
<div>
<asp:DropDownList ID="ddlistCity" runat="server" >
</asp:DropDownList>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="ddlistCity" ErrorMessage="no select.."
InitialValue="seciniz" SetFocusOnError="True" ValidationGroup="genel">*</asp:RequiredFieldValidator>
<br />
<br />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" ValidationGroup="genel"/>
</div>
</form>
</body>
使用Ajax;
公共部分类Ajax\u CSharp:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
RegisterTypeForAjax(typeof(Ajax_CSharp));
}
[Ajax.AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
公共字符串GetDataCity()
{
尝试
{
SqlConnection con=新的SqlConnection(ConfigurationManager.AppSettings[“conn”]);
SqlCommand cmd=新的SqlCommand(“从Sehir中选择*”,con);
cmd.Connection.Open();
SqlDataAdapter=新的SqlDataAdapter(cmd);
数据集ds=新数据集(“数据集”);
适配器。填充(ds,“表格”);
如果((ds.Tables[0].Rows.Count更改此项:
protected void Button1_Click(object sender, EventArgs e)
{
string c;
c = ddlistCity.SelectedItem.Value; **(error here. DropDownList is null.)**
}
致:
以防止错误
但是,错误在于,在客户端上创建值时,这些值不会持久化回服务器。这意味着您必须将下拉列表中选定的值存储在隐藏字段中,以便在服务器上进行处理。您还必须在每次页面加载时绑定下拉列表,因为服务器也不会持久化它在客户端上创建的ems
HTH.正如Brian提到的,使用SelectedItem
需要一些逻辑来验证项目是否为空。您可能更容易使用SelectedValue
:
string selectedValue = DropDownList1.SelectedValue;
ddlistCity是否在UpdatePanel中?但我想接收数据。这不可能吗?是的。您必须将所选项目复制到一个隐藏字段中。但是,您永远无法使用SelectedValue属性访问该值。原因是您在客户端上执行所有操作。当您做出该承诺时,世界会发生很大变化大多数控件执行此操作的主要方式(ASP.NET AJAX和第三方)将数据持久化回服务器就是将值放在一个隐藏字段中。使用服务器端的隐藏字段,该值将发布回服务器。谢谢。隐藏字段控件当您正确使用它时。查看html标记,但似乎是。静态字符串?隐藏字段?是性能。并且购买了数据。当页面发回时,下拉列表列表被重置。为什么?@Okan DropDownList不会持久化您通过javascript添加的值,这正是您正在做的。它永远不会持久化。您必须在客户端的每个页面加载上绑定到web服务。这只是Microsoft开发控件的方式(该控件是在他们推出ASP.NET AJAX框架之前开发的)。您可以看到此处的控件是否更适合您的需要:null,但DropDownList。我添加的数据在javasript中不存在。您想在JavaScript中获取SelectedValue
?SelectedValue实际获取单击事件。然后打印另一个数据库的值。嗯?这没有任何意义。SelectedValue
是一个返回字符串的属性…不要获取所选DropDownList id的值
protected void Button1_Click(object sender, EventArgs e)
{
string c;
if (ddllistCity.SelectedItem != null)
c = ddlistCity.SelectedItem.Value; **(error here. DropDownList is null.)**
}
string selectedValue = DropDownList1.SelectedValue;