我正在asp.net页面上工作,并试图改善其加载时间。在列表视图中加载20条记录大约需要8秒钟。
尽管使用eval的速度缓慢,但页面仍正确加载,如下所示:
<asp:LinkButton CommandArgument='<%#Eval("EmployeeID")%>' >Edit</asp:LinkButton>
但是,由于以前的方法很慢,因此我根据阅读的here信息将其更改为以下内容:
<asp:LinkButton CommandArgument='<%# ((DataRowView)Container.DataItem)["ApplicationID"]%>'>Edit</asp:LinkButton>
但是新代码会产生以下错误:无法将类型为DataObjects.Data.EmployeeInfo的对象转换为类型为'System.Data.DataRowView
现在,我对第二种方法并不熟悉,但是第一种方法的加载时间是不可接受的。 注意事项:
我看到的示例代码使用了DataRowView和DataItem。我是否应该将DataRowView或DataItem更改为其他内容? 我需要怎么做才能纠正此错误?
答案 0 :(得分:1)
更改<asp:LinkButton CommandArgument='<%# ((DataRowView)Container.DataItem)["ApplicationID"]%>'>Edit</asp:LinkButton>
到
<asp:LinkButton CommandArgument='<%# ((DataObjects.Data.EmployeeInfo)Container.DataItem).ApplicationID %>'>Edit</asp:LinkButton>
尽管如此,这不太可能对您的加载时间做出任何重大改进。 8秒内加载20条记录几乎可以肯定与Eval或演员表无关。这很可能表明您的存储过程/数据库代码中存在性能问题。您应该运行SQL Server Profiler来准确了解数据库查询花费了多长时间。如果确认问题出在您的存储过程/视图中,则可以使用SSMS Query Analyzer来识别瓶颈以及可以采取哪些措施来提高性能。如果您要发布查询分析器结果,我们可以在那里进一步为您提供帮助。