2011-12-06 24 views
2

我有一箇中繼器的asp.net web窗體。在這個轉發器是多個控件,我影響到這些控件與ItemCreated事件的JavaScript函數。我用這種代碼製成這樣:爲什麼我的updatepanel會生成數百個腳本塊?

btnBareme.OnClientClick = string.Format("ChangeBareme('{0}','{1}',this); return false", item.Num_dossier, item.IdDemande); 

JavaScript函數「changeBareme()」中的頁的標頭中定義。它工作正常,但我需要獨立於頁面的其他元素更新中繼器。

因此,我用一個asp:UpdatePanel環繞中繼器。這樣的事情:

<asp:UpdatePanel ID="UpdatePnl2" runat="server" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <div> 
       <h1>Foo</h1>          
      </div> 

      <div> 
      <asp:Repeater runat="server" ID="rptFoo" OnItemCreated="rptFoo_ItemCreated" OnItemCommand="rpt_ItemCommand"> 
       <HeaderTemplate> 
        <table id="TabRep" class="DataRepeater"> 
         <thead> 
          <tr>          
           <th></th>          
          </tr>         
         </thead> 
         <tbody> 
       </HeaderTemplate> 
       <ItemTemplate> 
        <tr> 
         SomeContent Here with controls 
        </tr>       
       </ItemTemplate> 
       <FooterTemplate> 
       </tbody> 
        </table>              
       </FooterTemplate>      
      </asp:Repeater> 
      <br/>        
      </div>            
     </ContentTemplate>   
    </asp:UpdatePanel> 

那裏..它不會工作。在UpdatePanel外頁的控制失去了他們的狀態和在調試模式下,有數百生成的「腳本塊」的..

Screenshot VS

我的問題是,我真的不很明白的UpdatePanel如何與處理JavaScript裏面。所以我需要更多有經驗的人的建議。我怎樣才能使這個更新面板有效?什麼是數百個腳本塊?我需要使該中繼器在頁面的其餘部分更加「獨立」。

在此先感謝。

+0

你是什麼意思的「控制頁面外的更新面板失去了他們的國家」?你可以說得更詳細點嗎? –

+0

如果你想要你的應用程序是'獨立的',擺脫asp.net控件並使用/編寫自己的代碼。我喜歡.net頁面,沒有多行視圖狀態數據... –

+0

@Shadow Wizard;在頁面(中繼器外面)是一些checkBoxes控件。更新updatePanel後,所有複選框都未選中。 – bAN

回答

2

這些腳本塊在這裏是因爲你有一個腳本塊爲每個按鈕

<input type="button" onclick="changebareme.."/> 

的這是不是這裏的更新面板故障。

更好的方法是爲每個按鈕添加一個通用的css類。然後用javascript選擇你的所有按鈕,並觀察所有按鈕上的點擊事件。

+0

謝謝,我明白了。但爲什麼在頁面的第一次加載時,這些腳本塊不在? – bAN

+0

是你的按鈕嗎? –

+0

是的一切都到位了。 – bAN

相關問題