下拉列表未显示以前的值

时间:2012-09-27 11:08:19

标签: javascript asp.net

我有一个带有autopostback false的asp.net下拉列表控件。 我写了js代码,当下拉值改变时显示确认消息。

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;
            }
        }
    }

并将此属性添加到下拉列表中,如下所示

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

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

所以当我点击取消按钮时,它应该显示我之前的值。请帮助。

1 个答案:

答案 0 :(得分:0)

如果要阻止事件,您应该从事件处理程序return false

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

您还传递了DropDownList的ClientID,但您没有使用它来查找控件。所以你应该使用document.GetElementById

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

请注意,您可以使用defaultValue获取在TextBox的服务器端设置的初始值。