1

我有一个带有 gridview 的 CollapsiblePanelExtender 控件,我将它放在用户控件中。

我将以下脚本添加到用户控件的末尾以平滑动画:

<script type="text/javascript">

    function pageLoad(sender, args) {
        $find(("<%= CPE.ClientID %>"))._animation._fps = 35;
        $find(("<%= CPE.ClientID %>"))._animation._duration = 0.5;
    }

</script>

当我运行页面时,只有第二个手风琴被平滑,第一个是默认的迟缓。

以下是运行时脚本:

<script type="text/javascript">

    function pageLoad(sender, args) {
        $find(("MainContent_AccordionGV1_CPE"))._animation._fps = 35;
        $find(("MainContent_AccordionGV1_CPE"))._animation._duration = 0.5;
    }

</script>

. . . .

    function pageLoad(sender, args) {
        $find(("MainContent_AccordionGV2_CPE"))._animation._fps = 35;
        $find(("MainContent_AccordionGV2_CPE"))._animation._duration = 0.5;
    }

</script>

所以它应该按照这个工作。知道为什么不是吗?

谢谢。

添加:

我尝试手动将其添加到页面而不是用户控件,同样的行为。

    <script type="text/javascript">

        function pageLoad(sender, args) {
            $find(('<%= AccordionGV1.FindControl("CPE").ClientID %>'))._animation._fps = 35;
            $find(('<%= AccordionGV1.FindControl("CPE").ClientID %>'))._animation._duration = 0.5;
        }
</script>

当我添加相同的行但对于 AccordionGV2 ..第一个停止工作时工作。

让我觉得这是一个比这更大的问题。

4

2 回答 2

5

您应该在 UserControl 中使用此脚本:

(function () {
    Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(pageLoadedHandler);

    function pageLoadedHandler() {
        $find(("<%= CPE.ClientID %>"))._animation._fps = 35;
        $find(("<%= CPE.ClientID %>"))._animation._duration = 0.5;
    }
})();

这样,每个用户控件都不会覆盖pageLoad之前定义的函数,而是使用自己的 pageLoaded 事件处理程序

于 2013-04-11T09:10:17.653 回答
1

第二个 pageLoad() 函数覆盖了第一个。尝试给每个实例的 pageLoad() 一个唯一的名称,例如,用他的 UserControl 的 ClientID 作为后缀:

pageLoad_<%=this.ClientID%>()
于 2013-04-11T09:02:26.423 回答