【发布时间】:2019-02-02 11:07:28
【问题描述】:
我正在处理一个 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
现在,我对第二种方法不是很熟悉,但是第一种方法的加载时间是不可接受的。 注意事项:
- 有一个名为 EmployeeInfo 的类
- 正在通过存储过程从 sqlServer 检索数据
- 存储过程从视图中获取数据
- 有一个列表视图,其数据源设置为返回 EmployeeInfo 列表的方法的结果:列表
- 设置数据源后调用listview.databind()
- 当我从 eval 更改为上述方法时,每条记录中有 10 个字段都给出相同的错误
- 调用 databind() 后程序崩溃,表明存在强制转换问题
我看到的示例代码使用了 DataRowView 和 DataItem。我应该将 DataRowView 或 DataItem 更改为其他内容吗? 我需要做什么来纠正这个错误?
【问题讨论】:
标签: c# asp.net listview data-binding webforms