




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可能极好的又会带来很多的非议,但是我认为这确实很好,我看了大约20个无刷新的连动下拉列表,他们在Firefox下面就一团糟.为了这个我差不多搞了两天,就是如果提交窗体后如何保持第二个列表框的值,因为通过js 给下拉框添加条目那么他的状态是不会被保存的测试平台:ie6,firefox功能:二级无刷新连动特点:跨浏览器;提交窗体取第二下拉框的值;数据来源于数据库;以XMLhttp来发送请求,实现无刷新请求:如果您能够找到更好的方法请告诉我,非常感谢,您的批评和建议对我是莫大的鼓励webform1.ASPx:WebForm1javascript/intellisense/ie5 /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 = webform1.aspx?parent_id=+svalue;/初始化个xmlhttp对象var xmlhttp = jb();/提交数据,第一个参数最好为get,第三个参数最好为truexmlhttp.open(get,weburl,true); / alert(xmlhttp.responseText);/如果已经成功的返回了数据xmlhttp.()if(xmlhttp.readyState=4)/4代表成功返回数据 var result = xmlhttp.responseText;/得到服务器返回的数据/先清空dListChild的所有下拉项document.getElementById(dListChild).length = 0;/给dListChild加个全部型号的,注意是Option不是optiondocument.getElementById(dListChild).options.add(new Option(全部型号,0);if(result!=)/如果返回的数据不是空 /把收到的字符串按照,分割成数组 var allArray = result.split(,);/循环这个数组,注意是从1开始,因为收到的字符串第一个字符是,号,所以分割后第一个数组为空 for(var i=1;iallArray.length;i+) /在把这个字符串按照分割成数组 var thisArray = allArray.split();/为dListChild添加条目document.getElementById(dListChild).options.add(new Option(thisArray1.toString(),thisArray0.toString(); /发送数据,请注意顺序和参数,参数一定为null或者xmlhttp.send(null); 摩托罗拉诺基亚 后台webform1.aspx.cs:using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;using System.Configuration;using System.Data.SqlClient;namespace drop/ / WebForm1 的摘要说明。/ public class WebForm1 : System.Web.UI.Pageprotected System.Web.UI.WebControls.DropDownList dListParent;protected System.Web.UI.WebControls.Button Button1;protected System.Web.UI.WebControls.DropDownList dListChild;private void Page_Load(object sender, System.EventArgs e) / 在此处放置用户代码以初始化页面 /if(!IsPostBack) /BindDrop();/如果不是提交回来就绑定列表框 /protected void BindDrop() /首先我想父dropdownlist也绑定数据库,后面想没必要 /if(!IsPostBack) /绑定父dListParent / BindParent(); / /获得传递过来的parent_id值,如果是第一次请求他为null string str = Request.QueryStringparent_id; string str1 = dListParent.SelectedValue; Response.Write(str1); /如果str加个字符串!=原来的字符串则说明触发过dListParent的onchange事件 if(str+abc)!=abc) /绑定 dListChild控件BindChild(str);/把传来的父DropDownList的value做为参数 elseBindParent(str1);protected void BindParent(string str) /如果是第一次请求或者是刷新这个页面则根据dListParent的值来选择 /把参数转化成int int i = Convert.ToInt32(str); dListChild.Items.Clear(); dListChild.Items.Add(new ListItem(全部型号,0); /得到数据库连接字符串 string connStr = ConfigurationSettings.AppSettingsConnString.ToString();/初始化个conn对象 SqlConnection conn = new SqlConnection(connStr); /数据库语句 string commStr = string.Format(select type_value,type_text from phone_type where parent_id=0,i); /建立数据库命令对象 SqlCommand comm = new SqlCommand(commStr,conn); /打开数据库 conn.Open(); /执行命令 SqlDataReader dr = comm.ExecuteReader(); /循环dr,给dListParent添加条目 while(dr.Read() dListChild.Items.Add(new ListItem(dr1.ToString(),dr0.ToString();/也可以这样/dListParent.Items.Add(new ListItem(drphone_text.ToString(),drphone_value.ToString(); dListParent.Items0.Selected = true; /添加下面这话的意思是当点提交按钮提交窗体的时候第二个dListChild的状态能够得到保存 dListChild.SelectedValue = Request.FormdListChild; dr.Close(); conn.Close(); protected void BindChild(string str) /通过js给包括dropdownlist任何控件添加的内容不会被保存状态 /把参数转化成int int i = Convert.ToInt32(str); /定义个字符串用保存从数据库返回的数据 string result = ; /先清空输出的东西 Response.Clear(); string connStr = ConfigurationSettings.AppSettingsConnString.ToString(); SqlConnection conn = new SqlConnection(connStr); SqlCommand comm = conn.CreateCommand(); string commStr = string.Format(select type_value,type_text from phone_type where parent_id = 0,i); comm.CommandText = commStr; conn.Open(); SqlDataReader dr = comm.ExecuteReader(); while(dr.Read() result += ,+dr0.ToString() + + dr1.ToString();/dListChild.Items.Add(new ListItem(dr1.ToString(),dr0.ToString(); /把从数据库得到的信息输出到客户端 Response.Write(result); /输出完成关闭Response,以免造成不必要的输出 Response.Flush(); Response.Close(); dr.Close(); conn.Close();#region Web 窗体设计器生成的代码override protected void OnInit(EventArgs e) / / CODEGEN: 该调用是 Asp.Net Web 窗体设计器所必需的。 / InitializeComponent(); base.OnInit(e);/ / 设计器支持所需的方法 - 不要使用代码编辑器修改/ 此方法的内容。/ private void InitializeComponent() this.Bu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 31080-2025水产品冷链物流服务规范
- GB/T 20644.1-2025特殊环境条件选用导则第1部分:金属表面防护
- 森林水文学课件
- 电力系统职业技能鉴定考试试题及答案
- 2025年市场营销经理职位招聘笔试题及解题策略
- 2025年篮球裁判规则题库及答案
- 2025年轻微型无人机考试题库含完整答案详解【易错题】
- 2025年电力行业信息技术部招聘面试全攻略及模拟题答案
- 2025年初级无损检测员磁粉-MT-模拟面试题及答案详解
- 2025年市场营销经理专业技能考核预测题
- 2025年幼儿园教师大班数学工作总结样本(3篇)
- 2025年毕节市农业发展集团有限公司招聘考试笔试试题(含答案)
- 供应链安全管理知识培训课件
- 牛鼻子引流技术
- (2025年标准)班组承包协议书
- 2025国家能源投资集团有限责任公司审计中心社会招聘12人笔试参考题库附带答案详解(10套)
- 2025年全国I卷高考地理试题和答案
- 深圳微利房管理办法
- 生产安全会议纪要
- 护理文书书写PDCA案例
- 制作瓷器培训课件
评论
0/150
提交评论