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 "] 来获取。