2011-05-09 16 views
0

我有一個asp:轉發器這是數據綁定到項目的集合,一旦按鈕被點擊。標準票價。但是,如果對於中繼器,我的DISABLE ViewState,點擊按鈕後加載中繼器所花費的時間大大延長。這顯然與我試圖達到的效果相反。戲劇化的意思是啓用ViewState約10秒,禁用ViewState約35秒。爲asp:Repeater禁用ViewState會增加加載時間?

我不知所措......

注:在該按鈕單擊事件處理程序,我也緩存中的數據源。我這樣做,無論我啓用/禁用ViewState。使用ViewState時,緩存是否可能被忽略?

下面是相關代碼:

<asp:repeater id="niinMatchesTable" runat="server" enableviewstate="false"> 
<headertemplate> 
<table id="niinMatches" class="listing alternate"> 
    <tr> 
    <th>QTY.</th> 
    <th><asp:linkbutton runat="server" onclick="sortResultsTable" commandargument="niin-niin" text="NIIN" /></th> 
    <th><asp:linkbutton runat="server" onclick="sortResultsTable" commandargument="niin-partnumber" text="PART #" /></th> 
    <th>Cases</th> 
    </tr> 
</headertemplate> 
<itemtemplate> 
<tr class="odd"> 
    <td><asp:label runat="server" text='<%# DataBinder.Eval(Container.DataItem, "Quantity") %>' /></td> 
    <td><asp:label runat="server" text='<%# DataBinder.Eval(Container.DataItem, "NIIN") %>' /></td> 
    <td><asp:label runat="server" text='<%# DataBinder.Eval(Container.DataItem, "PartNumber") %>' /></td> 
    <td><asp:label runat="server" text='<%# DataBinder.Eval(Container.DataItem, "Cases") %>' /></td> 
</tr> 
</itemtemplate> 
<footertemplate> 
    </table> 
</footertemplate> 
</asp:repeater> 



protected void uploadClick(object sender, EventArgs e) 
{ 
    if (fileUploader.HasFile) 
    { 
     fileUploader.SaveAs(Server.MapPath("~/temp/inventory.xls")); 
     var niinMatches = getNiinMatches(); // Populates object by parsing spreadsheet 

     var absExp = System.Web.Caching.Cache.NoAbsoluteExpiration; 
     var slidingExp = TimeSpan.FromMinutes(10); 
     Cache.Insert("_niinMatches", niinMatches, null, absExp, slidingExp); 

     niinMatchesTable.DataSource = niinMatches; 
     niinMatchesTable.DataBind(); 
    } 
} 
+0

如果您提供您正在使用的代碼,可能會更容易提供幫助。 – R0MANARMY 2011-05-09 18:35:13

+0

如果您禁用了視圖狀態,那麼您需要在每個回傳中重新綁定中繼器。也許,您的數據正在從文件中獲取,而不是在每個回發後緩存的值使其緩慢。 – VinayC 2011-05-10 08:04:52

回答

0

急於下結論,我會得到的Firebug插件的Firefox和檢查什麼需要這麼長時間了。但是我沒有看到按鈕點擊有任何真正的緩存收益,因爲每次按鈕被點擊時,緩存將被更新...除非在每次回發中有另一種方法將gridview綁定到緩存數據集。