读书人

Ajax中实现DropDownList联动但是取不到

发布时间: 2012-01-26 19:40:46 作者: rapoo

Ajax中实现DropDownList联动但是取不到DropDownList2联动以后的值
操作过程:通过DropDownList1的onchange 将DropDownList1的值传递给XmlPost(obj)函数, 该函数通过XHR从.cs文件中获取要赋给DropDownList2的值,该值是通过DDlInfoBind(string TID)
获得的,然后在函数XmlPost(obj)中将该值赋给DropDownList2

问题来了: 我已经把值赋给DropDownList2了,但是为什么我有Button_Click事件的时候获得DropDownList2的值是在没有联动以前的值,比如,联动以前的值为空( " "),点击Button后返回的值也是空而不是联动以后赋给DropDownList2的选定的值~~~
哪位大虾帮帮忙,小弟在这里谢谢啦~~~~
代码如下~~~~
Script代码:
<SCRIPT LANGUAGE= "JavaScript ">
<!--
//以XML求取数据
function XmlPost(obj)
{
   var svalue = obj.value;
   //alert(svalue);
   if(svalue== "请选择 ")
   {
   document.all( "ddlInfo ").length=0;
   }
   else
   {
   var webFileUrl = "WebForm4.aspx?TypeID= " + svalue;
   var result = " ";
   var xmlHttp = new ActiveXObject( "MSXML2.XMLHTTP ");
   xmlHttp.open( "POST ", webFileUrl, false);//使用XMLPOST方式
   xmlHttp.send( " ");//发送
   result = xmlHttp.responseText;//得到返回的结果
  
   if(result != " ")
   {
     document.all( "ddlInfo ").length=0;//清空原来存在的
     var piArray = result.split( ", ");
     for(var i=0;i <piArray.length;i++)
     {
       var ary1 = piArray[i].toString().split( "| ");
       document.all( "ddlInfo ").options.add(new Option(ary1[0].toString(),ary1[1].toString()));
     }
   }
   else
   {
     alert(result);
   }
   }
}
.cs代码如下:
private void DDlInfoBind(string TID)
{
SqlConnection con = db.ReturnConn2();
  string Mystr = " ";
string bigName=TID;
//SqlDataReader dr=CDG.GetTypeInfo(TypeID);//此处用了数据访问层的代码,如要运行,必须自己写方法
//  DataTable MyTab =Tools.ConvertDataReaderToDataTable(dr);

string aa= "select * from info_fenlei where bigName= ' "+bigName+ " ' ";
SqlDataAdapter da = new SqlDataAdapter(aa,con);
DataSet ds = new DataSet();
da.Fill(ds);

//int count=ds.Tables[0].Rows.Count;


  if(ds.Tables[0].Rows.Count != 0)//判断是否有记录


  {
    for(int i=0;i <ds.Tables[0].Rows.Count;i++)//循环DataTable里的记录
    {
      Mystr += ", " + ds.Tables[0].Rows[i].ItemArray[1].ToString() + "| " + ds.Tables[0].Rows[i].ItemArray[1].ToString();
    }
    Mystr = Mystr.Substring(1);
  }
  Response.Write(Mystr);//向HTTP输出内容流写入一个字符数组
  Response.End();//停止该页的执行
}

/// <summary>
/// 绑定第一个下拉框
/// </summary>
private void DDlTypeBind()
{
SqlConnection con = db.ReturnConn2();
SqlDataAdapter da = new SqlDataAdapter( "select * from info_big ",con);
DataSet ds = new DataSet();
da.Fill(ds);
this.ddlType.DataSource = ds.Tables[0];
this.ddlType.DataTextField = "bigName ";
this.ddlType.DataValueField = "bigName "; 
this.ddlType.DataBind();  
this.ddlType.Items.Insert(0, "请选择 ");
this.ddlType.Items[0].Selected=true;

this.ddlType.Attributes.Add( "onchange ", "XmlPost(this); ");
}


[解决办法]
吧控制改成 Html 的控制,控件带上 runat= "server "
CS中用 Request.Form[ " "] 接收值试试。
[解决办法]
对,用 Request.Form[ "SecondSelectId "] 来获取。

读书人网 >asp.net

热点推荐