ASP.NET ajax 省市区三级联动 无法将数据绑定到DropDownList.不知道是不是绑定数据出错了
///<summary>
///三级联动,绑定省
///</summary>
public void mat()
{
string txtcmd1 = "Server=(local);database=OnlineVoteDB;uid=sa;pwd=pt-luyong;";
SqlConnection myconn = new SqlConnection(txtcmd1);
myconn.Open();
string sql_sheng = "select name from province";
SqlCommand cmd = new SqlCommand(sql_sheng, myconn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Sheng.Items.Add(dr["name"].ToString()); }
dr.Close();
myconn.Close(); }
/// <summary>
/// 省选定,加载市
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void rix()
{
string txtcmd1 = "Server=(local);database=OnlineVoteDB;uid=sa;pwd=pt-luyong;";
SqlConnection myconn = new SqlConnection(txtcmd1);
myconn.Open();
string sql_shi = "select city.code,city.name from city,province where province.code = city.provinceID and province.name = '" + Sheng.SelectedItem.Text + "'";
SqlCommand cmd = new SqlCommand(sql_shi, myconn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Shi.Items.Add(dr["name"].ToString());
}
myconn.Close();
dr.Close();
} /// <summary>
/// 市选定,加载区
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void key()
{
string txtcmd1 = "Server=(local);database=OnlineVoteDB;uid=sa;pwd=pt-luyong;";
SqlConnection myconn = new SqlConnection(txtcmd1);
myconn.Open();
string sql_qu = "select area.name from area,city where city.code = area.cityid and city.name = '" + Shi.SelectedItem.Text + "'";
SqlCommand cmd = new SqlCommand(sql_qu, myconn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Qu.Items.Add(dr["name"].ToString());
}
myconn.Close();
dr.Close();
}
//在加载页面时,从数据库中下载省列表到"省"下拉控件
protected void Pade_load(object sender, EventArgs e)
{
if(!IsPostBack)
{
mat();
}
} //在选定"省"之后,从数据库载入市列表到"市"下拉控件
protected void Sheng_SelectedIndexChanged(object sender, EventArgs e)
{
string txtcmd1 = "Server=(local);database=OnlineVoteDB;uid=sa;pwd=pt-luyong;";
SqlConnection myconn = new SqlConnection(txtcmd1);
Shi.Items.Clear();
myconn.Open();
rix();
myconn.Close();
}
//在选定市之后,从数据库载入区列表到"区"下拉控件
protected void Shi_SelectedIndexChanged(object sender, EventArgs e)
{
string txtcmd1 = "Server=(local);database=OnlineVoteDB;uid=sa;pwd=pt-luyong;";
SqlConnection myconn = new SqlConnection(txtcmd1);
Qu.Items.Clear();
myconn.Open();
key();
myconn.Close();
}
///<summary>
///三级联动,绑定省
///</summary>
public void mat()
{
string txtcmd1 = "Server=(local);database=OnlineVoteDB;uid=sa;pwd=pt-luyong;";
SqlConnection myconn = new SqlConnection(txtcmd1);
myconn.Open();
string sql_sheng = "select name from province";
SqlCommand cmd = new SqlCommand(sql_sheng, myconn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Sheng.Items.Add(dr["name"].ToString()); }
dr.Close();
myconn.Close(); }
/// <summary>
/// 省选定,加载市
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void rix()
{
string txtcmd1 = "Server=(local);database=OnlineVoteDB;uid=sa;pwd=pt-luyong;";
SqlConnection myconn = new SqlConnection(txtcmd1);
myconn.Open();
string sql_shi = "select city.code,city.name from city,province where province.code = city.provinceID and province.name = '" + Sheng.SelectedItem.Text + "'";
SqlCommand cmd = new SqlCommand(sql_shi, myconn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Shi.Items.Add(dr["name"].ToString());
}
myconn.Close();
dr.Close();
} /// <summary>
/// 市选定,加载区
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void key()
{
string txtcmd1 = "Server=(local);database=OnlineVoteDB;uid=sa;pwd=pt-luyong;";
SqlConnection myconn = new SqlConnection(txtcmd1);
myconn.Open();
string sql_qu = "select area.name from area,city where city.code = area.cityid and city.name = '" + Shi.SelectedItem.Text + "'";
SqlCommand cmd = new SqlCommand(sql_qu, myconn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Qu.Items.Add(dr["name"].ToString());
}
myconn.Close();
dr.Close();
}
//在加载页面时,从数据库中下载省列表到"省"下拉控件
protected void Pade_load(object sender, EventArgs e)
{
if(!IsPostBack)
{
mat();
}
} //在选定"省"之后,从数据库载入市列表到"市"下拉控件
protected void Sheng_SelectedIndexChanged(object sender, EventArgs e)
{
string txtcmd1 = "Server=(local);database=OnlineVoteDB;uid=sa;pwd=pt-luyong;";
SqlConnection myconn = new SqlConnection(txtcmd1);
Shi.Items.Clear();
myconn.Open();
rix();
myconn.Close();
}
//在选定市之后,从数据库载入区列表到"区"下拉控件
protected void Shi_SelectedIndexChanged(object sender, EventArgs e)
{
string txtcmd1 = "Server=(local);database=OnlineVoteDB;uid=sa;pwd=pt-luyong;";
SqlConnection myconn = new SqlConnection(txtcmd1);
Qu.Items.Clear();
myconn.Open();
key();
myconn.Close();
}
解决方案 »
- GridView 分页,不用默认的,要自己设计
- 获取一个ID在页面显示多张表的信息
- 我在aspx页面里面有个input type="text"文本框,我想在aspx.cs页面控制此文本框能不能编辑
- 我是新人.我现在有问题急着问大家.如果你是好心人就进来!!!!!快疯了!!!来者有分拿!
- 如何能令用"window.open"语句打开的窗口居中?
- 菜鸟菜问,请问ASP.NET和VB.NET有什么区别?
- 高分!高手进!急!!!在后台代码中可否产生类似<a href="login.aspx" target="_top">的效果呢?
- 挑战性问题 Windows2003+IIS6+ASP+Oracel9i无法建立连接,真正的高手请进
- 专家来门诊啦
- 自定义控件的界面设计问题
- javascript实现图片轮播,链接由后台控制
- 关于查询速度问题,顺便散分。
第二点:绑定DropDownList的时候需要
while (dr.Read())
{
Shi.Items.Add(dr["name"].ToString());
Shi.SelectedIndex = "";
Shi.SelectedValue = "";
Shi.DataBind();
}
public static DataTable FindByLoginId(string AdminId)
{
DataTable dt = DBHelp.GetInfo("select * from SendEmail where AdminId='" + AdminId + "' order by id desc");
return dt;
} DataTable dt = SendEmailManager.FindByLoginId((Session["Admin"] as Admin).LoginId);
DropDownList1.DataSource = dt.DefaultView; DropDownList1.DataBind();
<asp:DropDownList ID="DropDownList1" runat="server" Width="150px"
DataTextField="RealName" DataValueField="LoginId">
</asp:DropDownList>
我用的是DropDownList.Items.Add方法来绑定数据的啊.不是动态绑定
1,先将省啊市啊县啊之类的数据以json的格式放在一个文件里面。
2,利用Jquery读取这个文件进行填充。
3,下拉框联动选择的时候,用jquery动态获取数据填充即可。
<option value="0">
--请选择省--
</option>
</select>
<!--城市列表 等到ajax查询出该省份的所有城市,用填充到城市列表中-->
<select id="city" runat="server" onchange="changshi(this.value)" name="city" >
<option value="0">
--请选择市--
</option>
</select>
<!--区的列表 -->
<select id="qu" runat="server" name="qu">
<option value="0">
--请选择区--
</option>
</select>
当触发onchange事件时,会自动把下一个select中option的value加载出来.可是对应的问题也出来了.我无法获取它的真实value,每次都是默认的value="0",如此一来,获取的市也是默认的:"--请选择市--".请问有什么解决办法吗?以下是ajax:function changsheng(va)
{
if(va!='0')
{
var city = document.getElementById("city");
city.disabled=false;
var qu = document.getElementById("qu");
qu.disabled=true;
var f=document.getElementById("qu");
f.options.length=1;
var url="Handler.ashx?type=sheng&id="+va;
send_request("GET",url,null,"text",populateClass3);
}
}
function populateClass3(){
var f=document.getElementById("city");
if(http_request.readyState==4){
if(http_request.status==200){
var list=http_request.responseText;
var classList=list.split("|");
f.options.length=1;
for(var i=0;i<classList.length;i++){
var tmp = classList[i].split(",");
//alert(tmp[1] + "===" + tmp[0]);此处用alert测试,选择第一个下拉框时,会直接将该省的所有市的value加载出来.
f.add(new Option(tmp[1],tmp[0]));
}
}else{
alert("您所请求的页面有异常。");
}
}
}
function changshi(va)
{
if(va!='0')
{
var qu = document.getElementById("qu");
qu.disabled=false;
var url="Handler.ashx?type=shi&id="+va;
send_request("GET",url,null,"text",populateClass4);
}
}
function populateClass4(){
var f=document.getElementById("qu");
if(http_request.readyState==4){
if(http_request.status==200){
var list=http_request.responseText;
var classList=list.split("|");
f.options.length=1;
for(var i=0;i<classList.length;i++){
var tmp = classList[i].split(",");
alert(tmp[1] + "==" + tmp[0]);//此处用alert测试,选择第一个下拉框时,会直接将该市的所有地区的value加载出来.
f.add(new Option(tmp[1],tmp[0]));
}
}else{
alert("您所请求的页面有异常。");
}
}
}