我用了一个js的弹出层,里面放了一个dropdownlist控件,为什么每次我都不能取到选中的当前值,服务器端取到的都是原来的值。有什么解决方案吗?
asp.net前台代码(弹出层的div):
<div id="test" style="display:none; text-align:center ">
              &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;
               <asp:DropDownList ID="ddlCategory" runat="server" >               </asp:DropDownList>              
             <asp:LinkButton ID="LinkButton2" runat="server" onclick="LinkButton2_Click" Text="转移"></asp:LinkButton>
         </div>    
cs页面代码:
 if (!IsPostBack)
            {
                BindDataToDDL(); 
}
  protected void BindDataToDDL()
  {
          绑定数据到dropdownlist....
  }
protected void LinkButton2_Click(object sender, EventArgs e)
{
       string test = ddlCategory.SelectedValue.ToString()
}
页面首次加载的时候的值是“6”,后来我选择了别的,为什么取到的值还是“6”??、!
js弹出层代码:popWin("将选择的供应商转移分类", div, 200, 60); function popWin(title, msg, w, h){ 
var objSelect = document.getElementsByTagName("select"); //捕捉所有select标签
for(var j=0;j<objSelect.length;j++){
//设为不显示,再进行下面操作
objSelect[j].style.display="none";


var iWidth = document.documentElement.clientWidth;
var iHeight = document.documentElement.clientHeight;

var bgObj = document.createElement("div");
bgObj.id = "BgDiv";
bgObj.style.width = iWidth+"px";
bgObj.style.height = Math.max(document.body.clientHeight, iHeight)+"px";
document.body.appendChild(bgObj);

var msgObj=document.createElement("div"); 
msgObj.id = "MsgDiv";
msgObj.style.top = (iHeight-h)/2+"px";
msgObj.style.left = (iWidth-w)/2+"px";
msgObj.style.width = w+"px";
msgObj.style.height = h+"px";
document.body.appendChild(msgObj); var table = document.createElement("table"); 
msgObj.appendChild(table); 
table.id = "MsgDivTable";
var tr = table.insertRow(-1); 
var titleBar = tr.insertCell(-1);
tr.id = "MsgTitle";
titleBar.id = "MsgDivTitle";
titleBar.innerHTML = title; 
var moveX = 0;
var moveY = 0;
var moveTop = 0;
var moveLeft = 0;
var moveable = false;
var docMouseMoveEvent = document.onmousemove;
var docMouseUpEvent = document.onmouseup;
titleBar.onmousedown = function() {
var evt = getEvent();
moveable = true;
moveX = evt.clientX;
moveY = evt.clientY;
moveTop = parseInt(msgObj.style.top);
moveLeft = parseInt(msgObj.style.left);
document.onmousemove = function() {
if (moveable) {
var evt = getEvent();
var x = moveLeft + evt.clientX - moveX;
var y = moveTop + evt.clientY - moveY;
if ( x > 0 &&( x + w < iWidth) && y > 0 && (y + h < iHeight) ) {
msgObj.style.left = x + "px";
msgObj.style.top = y + "px";
}
}
};

document.onmouseup = function () {
if (moveable) {
document.onmousemove = docMouseMoveEvent;
document.onmouseup = docMouseUpEvent;
moveable = false;
moveX = 0;
moveY = 0;
moveTop = 0;
moveLeft = 0;
}
};
} var closeBtn = tr.insertCell(-1); 
closeBtn.id = "MsgDivClose";
closeBtn.innerHTML = "<span title='关闭'>×</span>"; 
closeBtn.onclick = function(){ 
for(var j=0;j<objSelect.length;j++){
//再给select显出来
objSelect[j].style.display="";

document.body.removeChild(bgObj); 
document.body.removeChild(msgObj); 
} var msgBox = table.insertRow(-1).insertCell(-1); 
msgBox.id = "MsgBox"; 
msgBox.colSpan = "2"; 
msgBox.innerHTML = msg; 
// 获得事件Event对象,用于兼容IE和FireFox
function getEvent() {
return window.event || arguments.callee.caller.arguments[0];
}
}function MsgDivClose(){
$("#MsgDivClose").trigger("click");
}

解决方案 »

  1.   

    应该是你的弹出层导致出现了2个ddlCategory,清除一个即可。解决方法有2个
    1,
    在form里面加
    <form id="form1" runat="server">
        <asp:HiddenField ID="xx" runat="server" />然后绑定ddlCategory后加
    ddlCategory.Attributes.Add("onchange", "document.getElementById('" + xx.ClientID + "').value=this.value");得到的方法采用 xx.Value
    方法2:
    msgBox.innerHTML = msg;
    $("#test").html("")加上这个,
      

  2.   

    dropdownlist.SelectItem.value---试试这个
      

  3.   

    net_lover(1楼) 太牛了,第一种方法试过了行的,第二种方法貌似没有用。。