我有一个 asp:Repeater ,它是一旦点击一个按钮就绑定到一组项目的数据。标准票价。但是,如果我为转发器禁用 ViewState,则单击按钮后加载转发器所需的时间会显着延长。这显然与我想要实现的效果相反。戏剧性地,我的意思是启用ViewState约10秒,禁用ViewState约35秒。
我不知所措......
注意:在按钮单击的事件处理程序中,我也在缓存数据源。无论我是否启用/禁用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 :(得分:0)
在得出结论之前,我会为firefox获取Firebug插件并检查需要这么长时间。但是我没有看到按钮点击时有任何实际的缓存增益,因为每次单击按钮时,缓存都会更新...除非有另一种方法将gridview绑定到每个回发上的缓存数据集。