对于我来说,不使用asp.net中的gridview来查询存储过程中的简单表,而是自己在服务器代码中编写html,是否有任何性能优势。我确信我的代码在输出中肯定会更简洁。
答案 0 :(得分:2)
我打算提出一个替代解决方案。如果您不需要GridView的任何功能,为什么不使用转发器。
转发器使其易于实现,但也允许您完全控制生成的源。没有字符串连接性能的问题。
我发现中继器的性能比GridViews略有改善。
答案 1 :(得分:0)
不,使用GridView没有性能优势。通常,GridView会降低一点性能,因为项目被写入ViewState,并生成了额外的HTML。您从GridView获得的好处包括可以轻松使用或创建的命令事件和参数,DataKey“属性包”,允许您跟踪大型结果集中的关键字段,以及许多其他内容。我将添加这个警告,我已经使用GridViews甚至非常简单的结果集返回,并没有看到任何重大的性能问题。
如果你只是从表查询中做一些输出,并且不担心与结果本身的数据进行太多的交互,那么“滚动你自己的”将提供一个很好的解决方案。
答案 2 :(得分:0)
嗯,当然这取决于你的实施。你几乎可以肯定地构建比股票gridview更快的东西。
问题是,你怎么知道? .Net中字符串连接的默认系统本质上非常慢,因此很容易意外地构建比库存gridview慢得多的东西。你当然可以测试一下,但是开发时间的投入可能会超过服务器性能的提升。
答案 3 :(得分:0)
在使用GridView和使用StringBuilder生成HTML之间存在另外的可能性。我在谈论使用ASP Table类。当我所做的只是吐出数据时,我已经看到了在标准GridView上使用它们的速度优势。作为一个额外的好处,我可以在我的输出中添加一个按钮(或链接按钮),并使用事件处理程序将其连接起来,并且在这方面仍然可以获得GridView的功能。
你这样使用它:
Dim tab As New Table
For Each row In DataTable.Rows
Dim tabRow as New TableRow
For Each col In row.Columns
dim tabCol as New TableColumn
tabCol .Text = row(col)
tabRow.Controls.Add(tabCol )
Next
tab.Rows.Add(tabRow)
Next
Page.Controls.Add(tab)