Facebook Like按钮无法在重新加载的GridView中呈现

时间:2011-06-17 13:30:41

标签: asp.net facebook updatepanel

我在GridView中有一个fb:like按钮,GridView在更新面板中。第一次页面加载fb:like按钮显示但是当我们单击下一个按钮时,在下一页上fb:like按钮不会呈现。知道什么是错的吗?

2 个答案:

答案 0 :(得分:3)

由于您使用更新面板更新页面,因此仅更新页面的一部分时,不会呈现类似按钮。您必须附加到客户端更新的事件(在JS中),然后触发Facebook XFBML渲染命令:

FB.XFBML.parse();

更多相关信息: http://developers.facebook.com/docs/reference/javascript/FB.XFBML.parse/

您可以使用以下代码执行此操作:

<script type="text/javascript">

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(pageLoaded);

var _panels, _count;

function pageLoaded(sender, args)
{
    if (_panels != undefined && _panels.length > 0)
    {
        for (i=0; i < _panels.length; i++)
            _panels[i].dispose();
    }

    var panels = args.get_panelsUpdated();

    if (panels.length > 0)
    {

        updateFbLike();
    }
}

function updateFbLike()
{
    FB.XFBML.parse();
}


</script>

这取自本文:

http://msdn.microsoft.com/en-us/magazine/cc163413.aspx

答案 1 :(得分:1)

理查德的解决方案对我来说很好。我将代码缩短为:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandlerBerliner);
function EndRequestHandlerBerliner(sender, args) {
    if (args.get_error() == undefined) {
        FB.XFBML.parse();
    }
}