簡體   English   中英

一頁上多次出現自定義Webpart的問題

[英]Issue with custom webpart multiple times on one page

我目前正在開發一個Webpart,它在其中的某些元素上運行帶有切換功能的jquery。 我的問題是,這個Webpart打算在同一Webpartpage上多次使用,我發現這給我帶來了很多麻煩,因為javascript將多次加載到該頁面上,以嘗試觸發同一元素上的函數。

我認為創建一些方法來更改此處和此處的不同值會很聰明,但最后我還是遇到了同樣的問題。

所以現在我沒主意了,我使用jquery和javascript的技能也很有限。 因此,任何幫助,示例,指針-使我更接近解決方案的任何事情,我將不勝感激。

jQuery腳本:

$(document).ready(function (){ 
      $('.togglingDiv').find('dd').hide().end().find('dt').click(function() {
             $(this).next().slideToggle("fast");
      });
});

jQuery切換的HTML:

<dl class="togglingDiv">
    <dt>Lorem ipsum</dt>
    <dd>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit.</dd>
    <dt>Lorem ipsum</dt>
    <dd>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit.</dd>
    <dt>Lorem ipsum</dt>
    <dd>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit.</dd>
 </dl>

您可以讓Webparts使用ClientScriptManager加載javascript。 這樣的事情將只包含一次腳本:

ClientScriptManager scriptManager = this.Page.ClientScript;

if (!scriptManager.IsClientScriptIncludeRegistered("scriptName"))
    scriptManager.RegisterClientScriptInclude("scriptName", "scriptUrl");

如果您不能使用外部文件,也可以使用.RegisterClientScriptBlock

在類似的情況下,我曾經用<dl id="togglingDiv" runat="server">替換<dl class="togglingDiv"> <dl id="togglingDiv" runat="server"> 當它具有“運行服務器”時,Asp.net會為“ togglingDiv”的每個實例生成一個不同的ID。

然后,將jQuery代碼放在ascx文件中,並使用ASP.Net的<%= .... %>構造生成它:

$(document).ready(function (){       
 $('#<%=togglingDiv.ClientId%>').find('dd').hide().end().find('dt').click(function()
  {             
  $(this).next().slideToggle("fast");   
  }); 
});

如果文件中包含JavaScript,則可以使用ScriptLink.Register方法。

ScriptLink封裝了ClientScriptManager調用以及其他功能。 請注意,如果name參數是相對路徑,則javascript文件必須位於12 \\ TEMPLATE \\ LAYOUTS \\ LCID目錄中(其中LCID是您的語言編號)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM