我是想做一个省市地区的三级无刷新联动,在网上下了个例子,不能实现:附上代码:<%@ Page Language="C#" AutoEventWireup="true" EnableEventValidation="false" CodeFile="Default6.aspx.cs" Inherits="Default6" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--更新日期2010-6-7-->
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>AjaxTest </title>
<script language="javascript" type="text/javascript">
//绑定City
function BindToCity(ProvinceID,DDL_City_ID)
{
var DataSet_City = Default6.GetCityData(ProvinceID).Value;//注意加Value
var DDL_City = document.getElementById(DDL_City_ID);
DDL_City.length = 0;//清除已有选项
DDL_City.options.add(new Option("--请选择--",0));
var Length = DataSet_City.Rows.Length;
if(Length!=0)
{ document.getElementById(DDL_City_ID).style.display="block";
document.getElementById("Area").style.display="none"; for(var i=0;i <Length;i++)
{
var Text = DataSet_City.Rows[i].Text;//必须和DataSet的列名一致
var Value = DataSet_City.Rows[i].Value;
DDL_City.options.add(new Option(Text,Value));
}
}
else
{
document.getElementById(DDL_City_ID).style.display="none";
document.getElementById("Area").style.display="none"; };
return;
}
//绑定Area
function BindToArea(CityID,DDL_Area_ID)
{
var DataSet_Area = Default6.GetAreaData(CityID).value;
var DDL_Area = document.getElementById(DDL_Area_ID);
DDL_Area.length = 0;
var Length = DataSet_Area.Rows.length; if(Length!=0){
for(var i=0;i <Length;i++)
{
var Text = DataSet_Area.Rows[i].Text;
var Value = DataSet_Area.Rows[i].Value;
DDL_Area.options.add(new Option(Text,Value));
}; }else{document.getElementById(DDL_Area_ID).style.display="none";}
return;
} </script>
</head>
<body>
<form id="form1" runat="server">
<div>请选择您所在的省:
<asp:DropDownList ID="Province" runat="server" >
</asp:DropDownList>
请选择您所在的市:
<asp:DropDownList ID="City" runat="server">
</asp:DropDownList>
请选择您所在的区:
<asp:DropDownList ID="Area" runat="server">
</asp:DropDownList>
</div>
</form>
</body>
</html>
cs:using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class Default6 : System.Web.UI.Page
{ protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(Default6), this);
this.BindToDDL();
} public DataSet GetDS(string SQL)
{
SqlConnection conn = new SqlConnection("server=WWW-74C6CBFEF43;database=tdata;uid=sa;pwd=sasa"); conn.Open();
SqlDataAdapter Ada = new SqlDataAdapter(SQL, conn);
DataSet ds = new DataSet();
try
{
Ada.Fill(ds);
conn.Close();
return ds; }
catch
{
throw;
} }
/**/
/// <summary>
/// //数据绑定
/// </summary> //绑定Province,并添加事件。
private void BindToDDL()
{
string SQLSelect_Province = @"select * from province ";
this.Province.DataSource = GetDS(SQLSelect_Province);
this.Province.DataTextField = "province";
this.Province.DataValueField = "provinceID";
this.Province.DataBind();
this.Province.Items.Insert(0, "--不限--");
//this.Province.Items.Insert(0, new ListItem("--不限--","-1")); //在事件onchange上添加函数BindTo×××,也可以添加在onclick事件上
this.Province.Attributes.Add("onchange", "BindToCity(this.options[selectedIndex].value,'City');"); this.City.Attributes.Add("onchange", "BindToArea(this.options[selectedIndex].value,'Area');"); } //根据省ID查询相应的城市
[AjaxPro.AjaxMethod]
public DataSet GetCityData(string ProvinceID)
{ string SQLSelect_City = @"select city as Text,cityid as Value from city where father='" + ProvinceID + "'";
Response.Write(SQLSelect_City.ToString());
return GetDS(SQLSelect_City);
} //根据城市ID查询相应的区域
[AjaxPro.AjaxMethod]
public DataSet GetAreaData(string CityID)
{
string SQLSelect_Area = @"select area as Text,areaid as Value from area where father='" + CityID + "'";
return GetDS(SQLSelect_Area);
}}
运行时错误 当 "省"的下拉列表change时
网页错误详细信息消息: 'Rows' 为空或不是对象
行: 17
字符: 9
代码: 0
URI: http://localhost:2440/WebSite3/Default6.aspx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--更新日期2010-6-7-->
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>AjaxTest </title>
<script language="javascript" type="text/javascript">
//绑定City
function BindToCity(ProvinceID,DDL_City_ID)
{
var DataSet_City = Default6.GetCityData(ProvinceID).Value;//注意加Value
var DDL_City = document.getElementById(DDL_City_ID);
DDL_City.length = 0;//清除已有选项
DDL_City.options.add(new Option("--请选择--",0));
var Length = DataSet_City.Rows.Length;
if(Length!=0)
{ document.getElementById(DDL_City_ID).style.display="block";
document.getElementById("Area").style.display="none"; for(var i=0;i <Length;i++)
{
var Text = DataSet_City.Rows[i].Text;//必须和DataSet的列名一致
var Value = DataSet_City.Rows[i].Value;
DDL_City.options.add(new Option(Text,Value));
}
}
else
{
document.getElementById(DDL_City_ID).style.display="none";
document.getElementById("Area").style.display="none"; };
return;
}
//绑定Area
function BindToArea(CityID,DDL_Area_ID)
{
var DataSet_Area = Default6.GetAreaData(CityID).value;
var DDL_Area = document.getElementById(DDL_Area_ID);
DDL_Area.length = 0;
var Length = DataSet_Area.Rows.length; if(Length!=0){
for(var i=0;i <Length;i++)
{
var Text = DataSet_Area.Rows[i].Text;
var Value = DataSet_Area.Rows[i].Value;
DDL_Area.options.add(new Option(Text,Value));
}; }else{document.getElementById(DDL_Area_ID).style.display="none";}
return;
} </script>
</head>
<body>
<form id="form1" runat="server">
<div>请选择您所在的省:
<asp:DropDownList ID="Province" runat="server" >
</asp:DropDownList>
请选择您所在的市:
<asp:DropDownList ID="City" runat="server">
</asp:DropDownList>
请选择您所在的区:
<asp:DropDownList ID="Area" runat="server">
</asp:DropDownList>
</div>
</form>
</body>
</html>
cs:using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class Default6 : System.Web.UI.Page
{ protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(Default6), this);
this.BindToDDL();
} public DataSet GetDS(string SQL)
{
SqlConnection conn = new SqlConnection("server=WWW-74C6CBFEF43;database=tdata;uid=sa;pwd=sasa"); conn.Open();
SqlDataAdapter Ada = new SqlDataAdapter(SQL, conn);
DataSet ds = new DataSet();
try
{
Ada.Fill(ds);
conn.Close();
return ds; }
catch
{
throw;
} }
/**/
/// <summary>
/// //数据绑定
/// </summary> //绑定Province,并添加事件。
private void BindToDDL()
{
string SQLSelect_Province = @"select * from province ";
this.Province.DataSource = GetDS(SQLSelect_Province);
this.Province.DataTextField = "province";
this.Province.DataValueField = "provinceID";
this.Province.DataBind();
this.Province.Items.Insert(0, "--不限--");
//this.Province.Items.Insert(0, new ListItem("--不限--","-1")); //在事件onchange上添加函数BindTo×××,也可以添加在onclick事件上
this.Province.Attributes.Add("onchange", "BindToCity(this.options[selectedIndex].value,'City');"); this.City.Attributes.Add("onchange", "BindToArea(this.options[selectedIndex].value,'Area');"); } //根据省ID查询相应的城市
[AjaxPro.AjaxMethod]
public DataSet GetCityData(string ProvinceID)
{ string SQLSelect_City = @"select city as Text,cityid as Value from city where father='" + ProvinceID + "'";
Response.Write(SQLSelect_City.ToString());
return GetDS(SQLSelect_City);
} //根据城市ID查询相应的区域
[AjaxPro.AjaxMethod]
public DataSet GetAreaData(string CityID)
{
string SQLSelect_Area = @"select area as Text,areaid as Value from area where father='" + CityID + "'";
return GetDS(SQLSelect_Area);
}}
运行时错误 当 "省"的下拉列表change时
网页错误详细信息消息: 'Rows' 为空或不是对象
行: 17
字符: 9
代码: 0
URI: http://localhost:2440/WebSite3/Default6.aspx
[AjaxPro.AjaxMethod]
public DataSet GetCityData(string ProvinceID)
{ string SQLSelect_City = @"select city as Text,cityid as Value from city where father='" + ProvinceID + "'";
Response.Write(SQLSelect_City.ToString());
return GetDS(SQLSelect_City);
} //根据城市ID查询相应的区域
[AjaxPro.AjaxMethod]
public DataSet GetAreaData(string CityID)
{
string SQLSelect_Area = @"select area as Text,areaid as Value from area where father='" + CityID + "'";
return GetDS(SQLSelect_Area);
}}
两个public dataset 都是 public datatable
但是运行的时候出现错误:CS0029: 无法将类型“System.Data.DataSet”隐式转换为“System.Data.DataTable”于是我改成了dataset 但却出现1楼的错误 .