首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

Ajax中实现DropDownList联动但是取不到DropDownList2联动以后的值解决办法

2012-01-26 
Ajax中实现DropDownList联动但是取不到DropDownList2联动以后的值操作过程:通过DropDownList1的onchange将

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

热点排行