2012-09-27 37 views
0

我有一个asp.net dropdownlist控件与autopostback为false。 我写了js代码来显示确认消息,同时下拉值更改。Dropdownlist不显示以前的值

function ConfirmAbsent(ddlPresence) { 
     if (ddlPresence != null) { 
      var myValue = ddlPresence.options[ddlPresence.selectedIndex].text; 
      var blnAbsent = confirm("This will mark as "+ myValue +". Please confirm clicking OK."); 

      if (blnAbsent) { 
       return true; 
      } 
      else { 
       return false; 
      } 
     } 
    } 

并添加此属性为DropDownList像下面

ddlUserPresence.Attributes.Add("onchange", "if (!ConfirmAbsent(" + ddlUserPresence.ClientID 
        + ")) return; else __doPostBack('" 
        + ddlUserPresence.UniqueID + "', '');"); 

当我OK按钮点击回发工作正常的页面,但是当我在取消按钮点击它没有显示我的前值而是显示当前值。

因此,当我点击取消按钮它应该显示我以前的价值。请帮助。

回答

0

您应该return false从事件处理程序,如果你想防止事件:

ddlUserPresence.Attributes.Add("onchange", "return(ConfirmAbsent(" + ddlUserPresence.ClientID +"));"); 

您还传递DropDownList的客户端ID,但你不能用它来找到控制。所以你应该使用document.GetElementById

function ConfirmAbsent(ddlPresenceID) { 
    var ddlPresence = document.GetElementById(ddlPresenceID); 
    if (ddlPresence != null) { 

注意,您可以使用defaultValue得到这是在服务器端设置文本框的初始值。

+0

javascript方法将保持不变???自动回发事件怎么样? – akeeseth

+0

@akeeseth:'AutoPostback'不是一个事件。下拉菜单只会在AutoPostback =“true”时立即回发,客户端处理程序返回true。所以如果你从'onchange'返回'false',下拉将不会回发。 –

+0

仍然不能正常工作 – akeeseth