各位大侠进来看一下,关于省市连动问题,解决高分相赠!!!
我看过一些贴子,我用起来的时候有一些问题
1。为什么第一次选择省的时候,在代码response.end()的时候会停留一下(2-3秒),然后跳转的错误处理,错误为 线程正在停止
2。因为我要用到梅花雨控件,所以我把webconfig里的
<globalization
requestEncoding="gb2312"
responseEncoding="gb2312"
/>
把原来的utf-8改为了gb2312,但是连动就不会执行(好象一定要utf-8),这是为什么?
3。我在页面上放了一个button,在事件中想得到选择的省和市的编号(用了DataTextField和DataValueField),可以得到省对应的编号,但是市的编号为空,之后市(ddlCity)控件里面也为空了,这是为什么?怎么样可以得到市的值啊?
如果哪为大侠有做好的例子,请发给我谢谢,不要把代码贴进来(因为我试过有些帖里面的代码,总归些问题) 邮箱:supconan@163.com
解决问题后一定高分相赠,再次万分感谢!!
问题点数:70、回复次数:25Top
1 楼sunnystar365(一个人的天空)回复于 2005-06-02 17:50:20 得分 0
还有就是页面不能刷新,谢谢!!!Top
2 楼sunnystar365(一个人的天空)回复于 2005-06-03 08:00:21 得分 0
为什么没有人帮忙啊,急啊!!Top
3 楼boytomato(深爱一人叫颖的女孩!)回复于 2005-06-03 08:02:41 得分 20
http://www.cnblogs.com/gwazy/archive/2005/05/10/152312.html
用webservice 实现的无刷新连动....
Top
4 楼hchxxzx(NET?摸到一点门槛)回复于 2005-06-03 08:24:57 得分 25
这是我写的一个无刷新联动示例程序,代码是完整的.你可自己尝试一下.
以下为页面代码:
<form id="Form1" method="post" runat="server">
<asp:DropDownList id="DropDownList1" runat="server"></asp:DropDownList>
<asp:DropDownList id="DropDownList2" runat="server"></asp:DropDownList>
<SCRIPT LANGUAGE="JavaScript">
<!--
//以XML求取数据
function XmlPost(obj)
{
var svalue = obj.value;
var webFileUrl = "?brc_id=" + svalue;
var result = "";
var xmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
xmlHttp.open("POST", webFileUrl, false);
xmlHttp.send("");
result = xmlHttp.responseText;
if(result != "")
{
document.all("DropDownList2").length=0;
var piArray = result.split(",");
for(var i=0;i<piArray.length;i++)
{
var ary1 = piArray[i].toString().split("|");
//alert(ary1[0].toString());
document.all("DropDownList2").options.add(new Option(ary1[1].toString(),ary1[0].toString()));
}
}
else
{
alert(result);
}
}
//-->
</SCRIPT>
</form>
以下为后台代码:
private System.Data.OleDb.OleDbConnection conn;
private DataTable get_dt(string sql)
{
string connstr = "Provider=MSDAORA.1;Password=aqjc;User ID=aqjc;Data Source=aqjc";
this.conn = new OleDbConnection(connstr);
this.conn.Open();
OleDbCommand myOleDbCommand = new OleDbCommand(sql,this.conn);
OleDbDataAdapter myData = new OleDbDataAdapter(myOleDbCommand);
DataSet myDataset = new DataSet();
try
{
myData.Fill(myDataset);
}
catch(Exception ex)
{
throw ex;
}
this.conn.Close();
return myDataset.Tables[0];
}
private void Page_Load(object sender, System.EventArgs e)
{
string brc_id = this.Request.QueryString["brc_id"];
if(brc_id + "a" != "a")
{
this.down2_bind(brc_id);
}
if(!this.IsPostBack)
{
this.down1_bind();
}
}
/// <summary>
/// 返回第2个下拉框需要的值给xmlhttp
/// </summary>
/// <param name="brc_id"></param>
private void down2_bind(string brc_id)
{
string mystr = "";
string sql = "select brc_id,brc_name from asm_branch where brc_parentid = '" + brc_id + "'";
DataTable mytab = this.get_dt(sql);
if(mytab.Rows.Count != 0)
{
for(int i=0;i<mytab.Rows.Count;i++)
{
mystr += "," + mytab.Rows[i][0].ToString() + "|" + mytab.Rows[i][1].ToString();
}
mystr = mystr.Substring(1);
}
this.Response.Write(mystr);
this.Response.End();
}
/// <summary>
/// 绑定第一个下拉框
/// </summary>
private void down1_bind()
{
string sql = "select brc_id,brc_name from asm_branch where brc_level = '1'";
DataTable mytab = this.get_dt(sql);
this.DropDownList1.DataSource = mytab;
this.DropDownList1.DataValueField = "brc_id";
this.DropDownList1.DataTextField = "brc_name";
this.DropDownList1.DataBind();
this.DropDownList1.Attributes.Add("onchange","XmlPost(this);");
}
Top
5 楼sunnystar365(一个人的天空)回复于 2005-06-03 09:49:25 得分 0
To:hchxxzx(NET?摸到一点门槛)
我想问一下,如何通过button事件得到dropdownlist2的值所对应的编号呢Top
6 楼ye_zi(行到水穷处·坐看云起时)回复于 2005-06-03 10:04:23 得分 3
MARKTop
7 楼sunnystar365(一个人的天空)回复于 2005-06-03 11:56:15 得分 0
各位大哥,再帮帮忙啊Top
8 楼boytomato(深爱一人叫颖的女孩!)回复于 2005-06-03 12:00:05 得分 0
你看我那个也没,你改改连接字符串...用的是 Northwind
就是可以直接运行的.....
Top
9 楼hchxxzx(NET?摸到一点门槛)回复于 2005-06-03 13:54:14 得分 0
我想问一下,如何通过button事件得到dropdownlist2的值所对应的编号呢
-------
你是想在客户端还是服务端呢?
客户端:
document.all("dropdownlist2").options[document.all("dropdownlist2").selectedIndex].text;
服务端:
this.dropdownlist2.SelectedItem.Text;
Top
10 楼OSCAR_NJU(死刑犯)回复于 2005-06-03 14:29:02 得分 3
想问一下各位大牛,为什么要通过服务器端来实现呢,用客户端js不是很好吗?Top
11 楼renyu732(Sysinfo)回复于 2005-06-03 15:27:10 得分 5
function Do_Link_Change(ChangeObj,n,jsVal,jsShow)
{
if (n<0) return ;
var e = eval("document.all."+ChangeObj);
for (var i=e.options.length; i>-1; i--)
e.remove(i);
var show = eval(jsShow+"["+ n+"]"); //得到数组名
var val=eval(jsVal+"["+ n+"]");
if (val.length<1) return;
for (var i=0; i<val.length; i++)
e.options.add(new Option(show[i], val[i]));
}
然后你必须在客户端写对应的js变量,例如
var area_show = new Array();
var area_value = new Array();
var point_show = new Array();
var point_value = new Array();
area_show[0]='广东';
area_value[0]=510000;
point_show[0]=new Array();
point_value[0]=new Array();
area_show[1]='广州';
area_value[1]=510100;
point_show[1]=new Array();
point_value[1]=new Array();
point_show[1][0]='天河';
point_value[1][0]=1;
point_show[1][1]='河南';
point_value[1][1]=1;
point_show[1][2]='火车站';
point_value[1][2]=3;
area_show[2]='深圳';
area_value[2]=510200;
point_show[2]=new Array();
point_value[2]=new Array();
point_show[2][0]='南山';
point_value[2][0]=1;
point_show[2][1]='龙岗';
point_value[2][1]=1;
point_show[2][2]='盐田';
point_value[2][2]=3;
然后再第一个dropdownlist里面写 onchange="Do_Link_Change('npoint',this.selectedIndex,'point_value','point_show')"
"npoint"是第二个dropdownlist的id
Top
12 楼sunnystar365(一个人的天空)回复于 2005-06-03 16:55:34 得分 0
To: hchxxzx(NET?摸到一点门槛) 大哥:
我是想在服务器端得到,但是只要页面一刷新,DropDownList2的值就为空了,所以你的那句话是错误的,不能那样取,不知道你有没有办法解决呢?用SelectedItem.Text可以得到对应的编号吗?(假如我的dropdowlist2显示的是北京,可以把对应北京的编号1取出来吗?如果是直接数据库绑定的,可以用DataValueField来得到)
To:boytomato(深爱一人叫颖的女孩!) 大哥:
你的方法我也试了,可以运行起来没有反应,不知道大哥你有没有例子,发给我看一下好吗,还有就是如果我在页面上加一个button,会显示缺少runat=server,不知道你是不是特意没有写啊(所以你的代码我暂时还不能用,因为我一定要用到服务器端控件的,要把数据保存到数据库中的),不知道大哥你能不能修改一下啊Top
13 楼sunnystar365(一个人的天空)回复于 2005-06-03 16:56:57 得分 0
十分感谢进来看我帖的大侠门,如果问题解决之后,一定再开贴送分Top
14 楼goody9807(http://goody9807.cnblogs.com)回复于 2005-06-03 17:29:33 得分 14
http://www.cnblogs.com/goody9807/archive/2005/04/25/144742.htmlTop
15 楼boytomato(深爱一人叫颖的女孩!)回复于 2005-06-03 17:30:10 得分 0
不知道你是不是特意没有写啊???
我要是不想让别人知道,我倒不往上写了....
这是原列子...
http://www.cnblogs.com/Files/gwazy/WebService.rar
webform2.aspx是那个连动.....改一下连接......
Top
16 楼hchxxzx(NET?摸到一点门槛)回复于 2005-06-03 20:35:36 得分 0
我是想在服务器端得到,但是只要页面一刷新,DropDownList2的值就为空了
-------
那是你加载数据有问题,你根据我的那个例子,去实际试一下.Top
17 楼jyk(今天由我来写的代码,明天就让程序自己完成!喜欢编程。和气生财。共同提高。共同进步!)回复于 2005-06-03 22:07:46 得分 0
2。因为我要用到梅花雨控件,所以我把webconfig里的
<globalization
requestEncoding="gb2312"
responseEncoding="gb2312"
=============
编码问题。不一定是utf-8 但是.aspx .js 等文件的格式要一致,要么都是utf-8的要么都是gb2312的。
???????????????
3。我在页面上放了一个button,在事件中想得到选择的省和市的编号(用了DataTextField和DataValueField),可以得到省对应的编号,但是市的编号为空,之后市(ddlCity)控件里面也为空了,这是为什么?怎么样可以得到市的值啊?
=======================
用js脚本填充的下拉列表框后台是不认得牐就是说虽然你用js的方式填充了“市”页面上可以看到效果但是asp.net是不承认的。解决方法就是用一个隐藏的文本框,或是隐藏域来记录市的信息。
Top
18 楼zeusvenus()回复于 2005-06-03 22:27:16 得分 0
帮兄弟顶一下!Top
19 楼Cry_Out(东北)回复于 2005-06-03 22:28:05 得分 0
markTop
20 楼sp1234(asp.net不是一个语言,是一个操作系统)回复于 2005-06-03 22:47:56 得分 0
看起来丢数据是那个什么梅花与控件的问题。你把那个控件删掉,再测试自己的代码!Top
21 楼sunnystar365(一个人的天空)回复于 2005-06-04 09:37:26 得分 0
To jyk(喜欢编程。和气生财。共同提高。共同进步)
我看了梅花雨控件的代码,可以找不到关于编码的设置,那怎么样才能把.aspx,.js文件的编码设置为一致呢Top
22 楼boytomato(深爱一人叫颖的女孩!)回复于 2005-06-04 09:59:36 得分 0
js 文件
用记事本打开,然后存时选择保存类型为
Unicode
Top
23 楼boytomato(深爱一人叫颖的女孩!)回复于 2005-06-05 09:24:00 得分 0
因为网页用的是utf-8编码,将此js文件存为utf-8编码文件即可
不好意思不是 Unicode 你改成 utf-8
Top
24 楼sunnystar365(一个人的天空)回复于 2005-06-06 08:16:10 得分 0
谢谢各位大哥的帮助,说过完后开帖送分,请各位大哥接分,题目为感谢Top
25 楼cx12cn(攻台保钓收南沙!!)回复于 2005-06-06 10:08:17 得分 0
markTop




