我搜了帖子,也照着做了,但是我现在的问题是第二个下拉里是一片空白,,两天始终解决不了,望高人指点~~~~代码如下
script:
<script>
 
  function load(parentid)
  {
   var drp2 = document.getElementById("ddl2");
   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", "DropChild.aspx?parentid="+parentid, false);
   oHttpReq.send("");
   result = oHttpReq.responseText;
   oDoc.loadXML(result);
   items = oDoc.selectNodes("//NewDataSet/Board");
   for (var item = items.nextNode(); item; item = items.nextNode())
   {
   var cid = item.selectSingleNode("boardid").nodeTypedValue;
   var cname = item.selectSingleNode("BoardType").nodeTypedValue;
  
   //document.getElementById('dropdownlist').value
  
   var newOption = document.createElement("OPTION");
   newOption.text = cname;
   newOption.value = cid;
   drp2.options.add(newOption);
   }
  }
</script>search.aspx.cs if(!this.IsPostBack)
{
sqlcn.ConnectionString=ConfigurationSettings.AppSettings["ConnectionString"].ToString();
sqlcn.Open();
string sqlstr="select BoardType, boardid from Dv_Board where Depth=0";
// SqlCommand sqlcmd=new SqlCommand(sqlstr,sqlcn);
SqlDataAdapter sqlad=new  SqlDataAdapter(sqlstr,sqlcn);
DataSet ds=new DataSet();
sqlad.Fill(ds,"board");
ddl1.DataSource=ds.Tables["board"].DefaultView ;
ddl1.DataTextField="BoardType";
ddl1.DataValueField="boardid";
ddl1.DataBind();
// ddl1.Items.Add(new ListItem("选择版面",""));
// ddl1.Items[ddl1.Items.Count-1].Selected =true;

// this.ddl1.Attributes.Add("onchange","load(this.options[this.selectedIndex].value)");  
sqlcn.Close();
}DropChild.aspx.csif(this.Request["parentid"]!=null)
{
string parentid = this.Request["parentid"].ToString();
SqlConnection sqlcn=new SqlConnection();
sqlcn.ConnectionString=ConfigurationSettings.AppSettings["ConnectionString"].ToString();
sqlcn.Open();
SqlDataAdapter da = new SqlDataAdapter("select BoardType,boardid from Dv_Board where parentid = '"+parentid+"'",sqlcn);
DataSet ds = new DataSet("Board");
da.Fill(ds);
XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Response.ContentEncoding);
writer.Formatting = Formatting.Indented;
writer.Indentation = 2;
writer.IndentChar = ' ';
ds.WriteXml(writer);
writer.Flush();
Response.End();
writer.Close();
}

解决方案 »

  1.   

    把search.aspx.cs改成如下就应该可以了,别忘了给分:
            string strConn = "server=(local);uid=sa;password=;database=article";
            if (this.Request["TypeId"] != null)
            {
                string TypeId = this.Request["TypeId"].ToString();
                SqlConnection Conn = new SqlConnection(strConn);
                Conn.Open();
                string strSql = "select classid,classname from Class_info where TypeID=" + TypeId;
                DataSet ds = new DataSet();
                SqlDataAdapter Adp = new SqlDataAdapter(strSql, Conn);
                Adp.Fill(ds, "Class");
                XmlTextWriter writer = new XmlTextWriter(Response.OutputStream,System.Text.Encoding.UTF8);//这句是你要的...我也花了很多时间在这里
                writer.Formatting = Formatting.Indented;
                writer.Indentation = 4;
                writer.IndentChar = ' ';
                ds.WriteXml(writer);
                writer.Flush();
                Response.End();
                writer.Close();
            }
      

  2.   

    不过这样有个BUG吧,就是页面刷新后第二个Dropdownlist的值为空了!!!期待解决方案