最近我注意到GridView的分页机制有一个微妙的限制。只有使用像ObjectDataSource这样的DataSource控件才能实现高效的分页,只需加载请求的数据页面,这意味着在不使用数据源时只需从代码隐藏(MSDN描述它here)就不可能进行声明性数据绑定。
这是否意味着ASP.NET基于声明性编程而不是代码隐藏?默认情况下进行声明性编程会更好吗?
答案 0 :(得分:1)
开箱即用WebForms试图引导您沿着声明路径前进。你可以绕过它并实际编写代码,但WebForms使它非常困难。
如果您真的想要控制,那么您应该查看ASP.NET MVC框架。
答案 1 :(得分:1)
ASP.Net使用两者:标记是声明性的,代码隐藏是必要的。
例如,您应该支持导致更多声明性代码的样式 - 构建用户控件。但是那些控件仍然需要命令性的代码来告诉他们如何表现。
答案 2 :(得分:0)
我最终使用SQL ROWNUMBER函数进行自己的分页。
select * from
( select row_number() over (order by pk asc) as rownumber, * from ...)
where row_number between @a and @b
我最终根本没有声明 - 而不是向数据源提供参数(可能做的事情)我只是在代码隐藏中管理所有内容,手动设置数据源,手动构建寻呼机。
我这样做的原因是什么? A bug in 3.5's querystringfield parameter handling
我可能已经使用row_number处理了对象数据源,但如果你不关心,你不会 以声明方式做任何事情。