dropdownlist 二级联动 第二级不能保存数据 dropdownlist 二级联动 第二级不能保存数据,数据读取成功后,无论选择哪个,都只获取数据库里的第一条信息! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看你的的代码要是ajax实现的,需要使用Request.Form得到 http://blog.csdn.net/xianfajushi/article/details/5928136 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" EnableEventValidation="false" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title><%= pagetitle %></title> <script language="javascript">// XmlHttp是什么? //最通用的定义为:XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面。 //来自MSDN的解释:XmlHttp提供客户端同http服务器通讯的协议。客户端可以通过XmlHttp对象(MSXML2.XMLHTTP.3.0)向http服务器发送请求并使用微软XML文档对象模型Microsoft® XML Document Object Model (DOM)处理回应。 //jb函数会根据不同的浏览器初始化个xmlhttp对象 function jb() { var A=null; try { A=new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { A=new ActiveXObject("Microsoft.XMLHTTP"); } catch(oc) { A=null } } if ( !A && typeof XMLHttpRequest != "undefined" ) { A=new XMLHttpRequest() } return A } //下面Go函数是父列表框改变的时候调用,参数是选择的条目 function Go(obj) { //得到选择框的下拉列表的value var svalue = obj.value; //定义要处理数据的页面 var weburl = "Default.aspx?parent_id="+svalue; //初始化个xmlhttp对象 var xmlhttp = jb(); //提交数据,第一个参数最好为get,第三个参数最好为true(表示异步,false表示同步) xmlhttp.open("get",weburl,true); // alert(xmlhttp.responseText); //如果已经成功的返回了数据 xmlhttp.onreadystatechange=function() { if(xmlhttp.readyState==4)//4代表成功返回数据 { var result = xmlhttp.responseText;//得到服务器返回的数据 //先清空ddlC的所有下拉项 document.getElementById("ddlC").length = 0; //给ddlC加个全部型号的,注意是Option不是option document.getElementById("ddlC").options.add(new Option("请选择","0")); if(result!="")//如果返回的数据不是空 { //把收到的字符串按照,分割成数组 var allArray = result.split(","); //循环这个数组,注意是从1开始,因为收到的字符串第一个字符是,号,所以分割后第一个数组为空 for(var i=1;i<allArray.length;i++) { //在把这个字符串按照|分割成数组 var thisArray = allArray[i].split("|"); //为ddlC添加条目 document.getElementById("ddlC").options.add(new Option(thisArray[1].toString(),thisArray[0].toString())); } } } } //发送数据,请注意顺序和参数,参数一定为null或者"" xmlhttp.send(null); } </script> </HEAD> <body> <form id="Form1" method="post" runat="server"> <TABLE id="Table1" style="Z-INDEX: 101; LEFT: 8px; WIDTH: 656px; POSITION: absolute; TOP: 8px; HEIGHT: 620px" cellSpacing="1" cellPadding="1" border="0"> <TR> <TD style="WIDTH: 71px; HEIGHT: 17px"><FONT face="宋体">所在地</FONT></TD> <TD style="HEIGHT: 17px"> <asp:dropdownlist id="ddlS" runat="server" onchange="Go(this)"></asp:dropdownlist> <asp:dropdownlist id="ddlC" runat="server"></asp:dropdownlist></TD> <TD style="HEIGHT: 17px"><FONT face="宋体"></FONT></TD> </TR> <TR> <TD align="center" colSpan="3"><FONT face="宋体"> <asp:button id="btnOk" runat="server" Text="确定并提交" Width="152px" OnClick="btnOk_Click"></asp:button></FONT></TD> </TR> <tr> <td> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> </td> </tr> </TABLE> </form> </body></HTML>using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;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 _Default : System.Web.UI.Page { private SqlConnection con; private SqlDataAdapter da; private DataSet ds; protected string pagetitle; //网页标题 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { con=new SqlConnection("server=.;database=NewsData;uid=sa;pwd=123"); da = new SqlDataAdapter("select * from Area1", con); ds = new DataSet(); da.Fill(ds, "area"); ds.Tables["area"].DefaultView.Sort = "ClassID ASC"; ddlS.DataSource = ds.Tables["area"].DefaultView; ddlS.DataValueField = "ClassID"; ddlS.DataTextField = "ClassName"; ddlS.DataBind(); } BindDrop(); pagetitle = Label1.Text; } protected void Button1_Click(object sender, EventArgs e) { Response.Write(ddlS.SelectedItem.Text); Response.Write(ddlC.SelectedItem.Text); } protected void BindDrop() { //ddlS.Attributes.Add("onchange", "Go(this)"); string str = Request.QueryString["parent_id"]; string str1 = ddlS.SelectedValue; Response.Write(str1); //如果str加个字符串!=原来的字符串则说明触发过ddlS的onchange事件 if ((str + "abc") != "abc") { //绑定 ddlC控件 BindChild(str);//把传来的父DropDownList的value做为参数 } else BindParent(str1); } protected void BindParent(string str) { //如果是第一次请求或者是刷新这个页面则根据ddlS的值来选择 //把参数转化成int int i = Convert.ToInt32(str); ddlC.Items.Clear(); ddlC.Items.Add(new ListItem("请选择", "0")); //得到数据库连接字符串 string connStr = "server=.;database=NewsData;uid=sa;pwd=123"; //初始化个conn对象 SqlConnection conn = new SqlConnection(connStr); //数据库语句 string commStr = string.Format("select ClassID,ClassName from Area where ClassID={0}", i); //建立数据库命令对象 SqlCommand comm = new SqlCommand(commStr, conn); //打开数据库 conn.Open(); //执行命令 SqlDataReader dr = comm.ExecuteReader(); //循环dr,给ddlS添加条目 while (dr.Read()) { ddlC.Items.Add(new ListItem(dr[1].ToString(), dr[0].ToString())); //也可以这样 //ddlS.Items.Add(new ListItem(dr["phone_text"].ToString(),dr["phone_value"].ToString())); } ddlC.ClearSelection(); ddlS.Items[0].Selected = false; //添加下面这话的意思是当点提交按钮提交窗体的时候第二个ddlC的状态能够得到保存 ddlC.SelectedValue = Request.Form["ddlC"]; dr.Close(); conn.Close(); } protected void BindChild(string str) { //通过js给包括dropdownlist任何控件添加的内容不会被保存状态 //把参数转化成int int i = Convert.ToInt32(str); string result = ""; Response.Clear(); string connStr = "server=.;database=NewsData;uid=sa;pwd=123"; SqlConnection conn = new SqlConnection(connStr); SqlCommand comm = conn.CreateCommand(); string commStr = string.Format("select ClassName,ClassID from Area where ClassID={0}", i); comm.CommandText = commStr; conn.Open(); SqlDataReader dr = comm.ExecuteReader(); while (dr.Read()) { result += "," + dr[1].ToString() + "|" + dr[0].ToString(); } Response.Write(result); Response.Flush(); Response.Close(); dr.Close(); conn.Close(); } protected void btnOk_Click(object sender, EventArgs e) { //Response.Write(ddlS.SelectedItem.Text); //Response.Write(ddlC.SelectedItem.Text); Label1.Text = ddlS.SelectedItem.Text + "<br>" + ddlC.SelectedItem.Text; }} http://download.csdn.net/detail/tys101582/1388836省市区三级联动C#源代码(含全国各地市数据库)无刷新非ASMX服务你可以参考一下这个。 省市区三级联动C#源代码(含全国各地市数据库)无刷新非ASMX服务http://download.csdn.net/detail/tys101582/1388836这个你可以用到,可以学习一下 求各位大牛如何看懂别人写的代码?(就当给各位练练手了) 我怎么找不到反汇编窗口了? WINFRM光标位置问题(高手请进) csdn的高手们,你们能帮我解决c#的转码问题吗???????就是把一个string 从utf8转化成gb2312。。。 C# 中使用IE控件常有问题,烦死人了。大家救助一下啊 请大家看看这个反编译的问题 简单的SQL语句? C#的奇怪問題.............. webclient类的uploadfile方法我怎么传不成功啊 发布软件24点大师 C#操作FTP的问题 高分请教datagridview当前单元格问题 在线等
要是ajax实现的,需要使用Request.Form得到
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" EnableEventValidation="false" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title><%= pagetitle %></title>
<script language="javascript">
// XmlHttp是什么?
//最通用的定义为:XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面。
//来自MSDN的解释:XmlHttp提供客户端同http服务器通讯的协议。客户端可以通过XmlHttp对象(MSXML2.XMLHTTP.3.0)向http服务器发送请求并使用微软XML文档对象模型Microsoft® XML Document Object Model (DOM)处理回应。
//jb函数会根据不同的浏览器初始化个xmlhttp对象
function jb()
{
var A=null;
try
{
A=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
A=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(oc)
{
A=null
}
}
if ( !A && typeof XMLHttpRequest != "undefined" )
{
A=new XMLHttpRequest()
}
return A
}
//下面Go函数是父列表框改变的时候调用,参数是选择的条目
function Go(obj)
{
//得到选择框的下拉列表的value
var svalue = obj.value;
//定义要处理数据的页面
var weburl = "Default.aspx?parent_id="+svalue;
//初始化个xmlhttp对象
var xmlhttp = jb();
//提交数据,第一个参数最好为get,第三个参数最好为true(表示异步,false表示同步)
xmlhttp.open("get",weburl,true);
// alert(xmlhttp.responseText);
//如果已经成功的返回了数据
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4)//4代表成功返回数据
{
var result = xmlhttp.responseText;//得到服务器返回的数据
//先清空ddlC的所有下拉项
document.getElementById("ddlC").length = 0;
//给ddlC加个全部型号的,注意是Option不是option
document.getElementById("ddlC").options.add(new Option("请选择","0"));
if(result!="")//如果返回的数据不是空
{
//把收到的字符串按照,分割成数组
var allArray = result.split(",");
//循环这个数组,注意是从1开始,因为收到的字符串第一个字符是,号,所以分割后第一个数组为空
for(var i=1;i<allArray.length;i++)
{
//在把这个字符串按照|分割成数组
var thisArray = allArray[i].split("|");
//为ddlC添加条目
document.getElementById("ddlC").options.add(new Option(thisArray[1].toString(),thisArray[0].toString()));
}
}
}
}
//发送数据,请注意顺序和参数,参数一定为null或者""
xmlhttp.send(null);
}
</script>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<TABLE id="Table1" style="Z-INDEX: 101; LEFT: 8px; WIDTH: 656px; POSITION: absolute; TOP: 8px; HEIGHT: 620px"
cellSpacing="1" cellPadding="1" border="0">
<TR>
<TD style="WIDTH: 71px; HEIGHT: 17px"><FONT face="宋体">所在地</FONT></TD>
<TD style="HEIGHT: 17px">
<asp:dropdownlist id="ddlS" runat="server" onchange="Go(this)"></asp:dropdownlist>
<asp:dropdownlist id="ddlC" runat="server"></asp:dropdownlist></TD>
<TD style="HEIGHT: 17px"><FONT face="宋体"></FONT></TD>
</TR>
<TR>
<TD align="center" colSpan="3"><FONT face="宋体">
<asp:button id="btnOk" runat="server" Text="确定并提交" Width="152px" OnClick="btnOk_Click"></asp:button></FONT></TD>
</TR>
<tr>
<td>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</td>
</tr>
</TABLE>
</form>
</body>
</HTML>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
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 _Default : System.Web.UI.Page
{
private SqlConnection con;
private SqlDataAdapter da;
private DataSet ds;
protected string pagetitle; //网页标题 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
con=new SqlConnection("server=.;database=NewsData;uid=sa;pwd=123");
da = new SqlDataAdapter("select * from Area1", con);
ds = new DataSet();
da.Fill(ds, "area");
ds.Tables["area"].DefaultView.Sort = "ClassID ASC";
ddlS.DataSource = ds.Tables["area"].DefaultView;
ddlS.DataValueField = "ClassID";
ddlS.DataTextField = "ClassName";
ddlS.DataBind();
}
BindDrop(); pagetitle = Label1.Text;
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write(ddlS.SelectedItem.Text);
Response.Write(ddlC.SelectedItem.Text);
} protected void BindDrop()
{
//ddlS.Attributes.Add("onchange", "Go(this)");
string str = Request.QueryString["parent_id"];
string str1 = ddlS.SelectedValue;
Response.Write(str1);
//如果str加个字符串!=原来的字符串则说明触发过ddlS的onchange事件
if ((str + "abc") != "abc")
{
//绑定 ddlC控件
BindChild(str);//把传来的父DropDownList的value做为参数
}
else
BindParent(str1);
}
protected void BindParent(string str)
{
//如果是第一次请求或者是刷新这个页面则根据ddlS的值来选择
//把参数转化成int
int i = Convert.ToInt32(str);
ddlC.Items.Clear();
ddlC.Items.Add(new ListItem("请选择", "0"));
//得到数据库连接字符串
string connStr = "server=.;database=NewsData;uid=sa;pwd=123";
//初始化个conn对象
SqlConnection conn = new SqlConnection(connStr);
//数据库语句
string commStr = string.Format("select ClassID,ClassName from Area where ClassID={0}", i);
//建立数据库命令对象
SqlCommand comm = new SqlCommand(commStr, conn);
//打开数据库
conn.Open();
//执行命令
SqlDataReader dr = comm.ExecuteReader();
//循环dr,给ddlS添加条目
while (dr.Read())
{
ddlC.Items.Add(new ListItem(dr[1].ToString(), dr[0].ToString()));
//也可以这样
//ddlS.Items.Add(new ListItem(dr["phone_text"].ToString(),dr["phone_value"].ToString()));
}
ddlC.ClearSelection();
ddlS.Items[0].Selected = false;
//添加下面这话的意思是当点提交按钮提交窗体的时候第二个ddlC的状态能够得到保存
ddlC.SelectedValue = Request.Form["ddlC"];
dr.Close();
conn.Close();
}
protected void BindChild(string str)
{
//通过js给包括dropdownlist任何控件添加的内容不会被保存状态
//把参数转化成int
int i = Convert.ToInt32(str); string result = ""; Response.Clear();
string connStr = "server=.;database=NewsData;uid=sa;pwd=123";
SqlConnection conn = new SqlConnection(connStr);
SqlCommand comm = conn.CreateCommand();
string commStr = string.Format("select ClassName,ClassID from Area where ClassID={0}", i);
comm.CommandText = commStr;
conn.Open();
SqlDataReader dr = comm.ExecuteReader();
while (dr.Read())
{
result += "," + dr[1].ToString() + "|" + dr[0].ToString();
}
Response.Write(result);
Response.Flush();
Response.Close();
dr.Close();
conn.Close();
}
protected void btnOk_Click(object sender, EventArgs e)
{
//Response.Write(ddlS.SelectedItem.Text);
//Response.Write(ddlC.SelectedItem.Text);
Label1.Text = ddlS.SelectedItem.Text + "<br>" + ddlC.SelectedItem.Text;
}
}
省市区三级联动C#源代码(含全国各地市数据库)无刷新非ASMX服务
你可以参考一下这个。
http://download.csdn.net/detail/tys101582/1388836
这个你可以用到,可以学习一下