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();
}
}
如果您提供您正在使用的代码,可能会更容易提供帮助。 – R0MANARMY 2011-05-09 18:35:13
如果您禁用了视图状态,那么您需要在每个回传中重新绑定中继器。也许,您的数据正在从文件中获取,而不是在每个回发后缓存的值使其缓慢。 – VinayC 2011-05-10 08:04:52