jQuery使用ASP突出显示:UpdatePanel

时间:2010-06-18 17:30:27

标签: c# asp.net jquery ajax repeater

我目前正在使用AJAX:UpdatePanelAnimationExtender并且我已经在代码中实现了它,目前工作正常但我遇到了使用UpdatePanelAnimationExtender和ASP:Repeater的问题。我一直在搞乱实现它的不同方式,但没有任何方法正常工作......

<小时/> 我试图用codebehind编写它 - 在itemBound内部(完美地生成代码,附加到UPAE但当然在部分回发时被删除)。 我也尝试在aspx中使用它,这也带来了问题。
转发器本身正在创建一个项目表(一个购物车),我试图突出显示发生回发时已更改的项目(如果数量改变则突出显示数量等)。

我已经读过,jquery有一个更清洁的方式来做这个,并试图朝着那个方向前进。
编辑: 我现在正在看

    function pageLoad()
    {
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
        changedHighlight();
    }
    function EndRequestHandler(sender, args){
        if (args.get_error() == undefined){ changedHighlight(); }
    }
    function changedHighlight() {
        $(document).ready(function() {
            $('span,input,option,select').live('change', function() { $(this).effect("highlight", {color: "#44EE22"}, 1500); });
        });
    }

我必须将它的存储值与新发布的值进行比较,我现在正在处理它。 “更改”似乎也不适用于asp:标签?

1 个答案:

答案 0 :(得分:0)

由于每次使用UpdatePanel和DOM重新创建回发问题而导致使用全局var(eh ..)结束(意味着无法使用$ .data()或this.data())。

仅突出显示具有ID的非提交输入和DOM元素。 (否则静态asp:标签将继续闪烁)

var oldVar = [];
function pageLoad()
{
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler)
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}
function BeginRequestHandler(sender, args) {
    $(document).ready(function() {
        oldVar = [];
        $('input,select,span').each(function() {
        if (this.type != "submit" && this.id != '') oldVar[this.id] = getValue(this);
        });
    });
}
function EndRequestHandler(sender, args){
    $(document).ready(function() {
        $('input,select,span').each(function() {
            if (this.type != "submit" && this.id != '')
            {
                if (oldVar[this.id] != getValue(this))
                {
                    $(this).effect('highlight', {color: '#44EE22'}, 3000);
                    oldVar[this.id] = getValue(this);
                }
            }
        });
    });
}
function getValue(control){
    if ('value' in control) return control.value;
    else if('textContent' in control) return control.textContent;
    else if('innerText' in control) return control.innerText;
}