繁体   English   中英

在asp.net(vb.net/c#)中从ms sql数据库填充数据的更好方法

[英]Better way for populating data from ms sql database in asp.net (vb.net/c#)

有什么更好的方法来填充数据库中的数据(表,每行至少500行,最少5行):-使用GridView (并且我将在标头中获得巨大的viewstate值)?或-将Repeater与具有Literal控件的enableviewstate="false"一起使用enableviewstate="false" (但必须在每次postback后使用带有onclick属性和隐藏字段的tr使用JavaScript进行填充)?

是较大的viewstate还是在每次postback后读取mdf的更好方法?

谢谢。

这取决于您的担忧所在。

如果您最关心的是事件的易处理性,那么启用viewstate的gridview是您的最佳选择。 它具有用户可以执行的各种动作的强大挂钩。 但是,它确实附带了您提到的viewstate带宽成本。 但是,如果您的受众使用相对良好的联系并且需要快速启动并运行,那么这可能是一个不错的选择。

如果带宽是您主要关心的问题,那么中继器/字面方法肯定会为您节省一些时间,但是您必须自己编写所有事件逻辑。 对每个回发运行相同的查询确实是多余的,但实际上由于数据库的缓存机制,它可能不会占用那么多的性能。 但是,每次回发后,您仍然会发送完整的表。 我认为,最好的带宽节省方案是在加载时仅发送一次完整的表,然后再通过Web服务调用处理所有表事件(您可以使用ASP.NET的Web-API框架)。 这样,只有任何实际的更改将通过网络发送。

您还可以在GridView上禁用viewstate,这将使其更快。 Repeater仍然比GridView快,但是如果编码正确,差异不会太大。 您也可以考虑分页GridView(即在页面中显示它,例如一次显示10行)。

从数据库中读取数据通常比来回发送大型ViewState更快,更高效,但不仅仅是速度决定了走哪条路。 需要考虑安全性和其他事项。 例如,从数据库获取数据对于安全性要比信任可以轻松调整的ViewState好得多。

如果您希望呈现的数据繁重,为什么不实施任何客户端实现? 像jqGrid还是使用KnockoutJS API? 然后,您可以将Web服务构建为后端数据提供者。

您可以从这里的 jqGrid和KnockoutJS 开始

如果使用客户端库实现此功能,则由于不需要繁琐的视图状态来保留值,并且服务器无需每次都呈现标记,因此应用程序将性能更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM