省份表 ProvinceID ProvinceName
城市表 CityID CityName  ProvinceID
求无刷新联动
最好是调试好的!
我是参照http://blog.csdn.net/cuike519/archive/2004/08/22/81727.aspx
写的!但是脚本不执行啊!

解决方案 »

  1.   


    SqlConnection con = new SqlConnection("server=.;database=uk_coupon_main_database;uid=sa;pwd=");
    con.Open();
    SqlCommand com = new SqlCommand("select * from UK_Province", con);
    com.ExecuteNonQuery();
    DataSet ds=new DataSet();
    SqlDataAdapter adp=new SqlDataAdapter(com);
    adp.Fill(ds,"UK_Province");

    this.DropDownList1.DataTextField="ProvinceName";
    this.DropDownList1.DataValueField="ProvinceID";
    this.DropDownList1.DataSource=ds.Tables["UK_Province"];
    this.DropDownList1.DataBind();
        function load(ProvinceID){
           var drp2 = document.getElementById("DropDownList2");
           for(var i = 0;i<=drp2.options.length -1;i++){
        drp2.remove(i);
           }
             var oHttpReq = new ActiveXObject("MSXML2.XMLHTTP");
           var oDoc = new ActiveXObject("MSXML2.DOMDocument");
           oHttpReq.open("POST", "webform6.aspx?ProvinceID="+ProvinceID, false);
           oHttpReq.send("");
           result = oHttpReq.responseText;
           oDoc.loadXML(result);
           items = oDoc.selectNodes("//CITY/Table");
           for (var item = items.nextNode(); item; item = items.nextNode()){
        var city = item.selectSingleNode("//city").nodeTypedValue;
        var newOption = document.createElement("OPTION");
        newOption.text = CityID;
        newOption.value = CityID;
        drp2.options.add(newOption);
           }
          }
    </script> if(this.Request["ProvinceID"]!=null)
    {
    string ProvinceID = this.Request["ProvinceID"].ToString();
    SqlConnection con = new SqlConnection("server=.;database=uk_coupon_main_database;uid=sa;pwd=");
    con.Open();
    DataSet ds = new DataSet("CITY");
    SqlDataAdapter da = new SqlDataAdapter("select * from UK_City where ProvinceID='"+ProvinceID+"'", con);
    // DataSet ds = new DataSet("CITYID");
    da.Fill(ds);
    XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Response.ContentEncoding);
    writer.Formatting = Formatting.Indented;
    writer.Indentation = 4;
    writer.IndentChar = ' ';
    ds.WriteXml(writer);
    writer.Flush();
    Response.End();
    writer.Close();
    }
      

  2.   

    楼主,我送给你一个现成的四级无刷新连动的demo吧
      

  3.   

    http://www.cnblogs.com/gwazy/archive/2005/05/10/152312.aspx
    有 demo 的..你可以下...
      

  4.   

    demo 中的第二个页面
    webform2.aspx 就是....
    注意改一下 调用webservice中的连接字符串.....
     
      

  5.   

    <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);");
    }
      

  6.   

    感谢 hchxxzx(NET?摸到一点门槛)
      

  7.   

    http://www.cnblogs.com/goody9807/archive/2005/04/25/144742.html
      

  8.   

    用 xmlhttp 动态库自己写,不会费多少事的
      

  9.   

    http://community.csdn.net/Expert/topic/4054/4054821.xml?temp=.443722
    这里面hchxxzx(NET?摸到一点门槛)方法是可以用的,我试过的
      

  10.   

    HiddenValueshi.value= document.all("dropdownlist2").options[document.all("dropdownlist2").selectedIndex].text;
         HiddenValue.value= document.all("dropdownlist2").options[document.all("dropdownlist2").selectedIndex].value这样的话不行啊!