首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能将sqlViewResults转换为DataRowView

不能将sqlViewResults转换为DataRowView
EN

Stack Overflow用户
提问于 2018-08-27 21:37:05
回答 1查看 45关注 0票数 0

我正在处理一个asp.net页面,并试图改进它的加载时间。在一个列表视图中加载20条记录需要大约8秒。

页面正在正确加载,尽管使用eval的速度很慢,如下所示:

代码语言:javascript
复制
<asp:LinkButton CommandArgument='<%#Eval("EmployeeID")%>' >Edit</asp:LinkButton>

但是,由于前面的方法很慢,我根据我阅读这里的信息将其更改为

代码语言:javascript
复制
<asp:LinkButton CommandArgument='<%# ((DataRowView)Container.DataItem)["ApplicationID"]%>'>Edit</asp:LinkButton>

但是,新代码会产生以下错误:无法将DataObjects.Data.EmployeeInfo类型的对象强制转换为“System.Data.DataRowView”类型

现在,我不太熟悉第二个方法,但是第一个方法的加载时间是不可接受的。要注意的事情:

  • 有一个名为EmployeeInfo的类
  • 正在通过存储过程从sqlServer检索数据。
  • 存储过程从视图中获取数据。
  • 有一个listview,其数据源被设置为返回EmployeeInfo: List列表的方法的结果
  • 在设置数据源之后调用listview.databind()
  • 在每条记录中都有10个字段,当我更改为上述方法时,所有字段都会产生相同的错误。
  • 在调用databind()指示转换问题后,程序崩溃

我看到的示例代码使用了DataRowView和DataItem。我应该把DataRowView或DataItem改成别的东西吗?我需要做些什么来纠正这个错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-27 22:35:07

改变<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或casting无关。它可能表明存储过程/数据库代码中存在性能问题。您应该运行来准确地了解数据库查询所用的时间。如果确认问题与存储过程/视图有关,则可以使用SSMS查询分析器来识别瓶颈,以及可以做些什么来提高性能。如果您想发布查询分析器的结果,我们可以从那里进一步帮助您。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52047302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档