最近我注意到 GridView 的分页机制有一个微妙的限制。有效的分页,加载刚刚请求的数据页面,只有使用像 ObjectDataSource 这样的 DataSource 控件才可能实现,这意味着声明性数据绑定,并且在不使用数据源并且仅来自代码隐藏(MSDN 在此处描述)时是不可能的。
这是否意味着 ASP.NET 是基于声明式编程而不是背后的代码?并且默认情况下进行声明式编程会更好吗?
最近我注意到 GridView 的分页机制有一个微妙的限制。有效的分页,加载刚刚请求的数据页面,只有使用像 ObjectDataSource 这样的 DataSource 控件才可能实现,这意味着声明性数据绑定,并且在不使用数据源并且仅来自代码隐藏(MSDN 在此处描述)时是不可能的。
这是否意味着 ASP.NET 是基于声明式编程而不是背后的代码?并且默认情况下进行声明式编程会更好吗?
开箱即用的 WebForms 试图引导您走上声明式的道路。您可以绕过它并实际编写代码,但 WebForms 使这变得极其困难。
如果您真的想拥有控制权,那么您应该查看 ASP.NET MVC 框架。
ASP.Net 两者都使用:标记是声明性的,代码隐藏是命令性的。
您应该倾向于一种导致更多声明性代码的样式 - 例如,构建用户控件。但是这些控件仍然需要命令式代码来告诉它们如何操作。
我最终使用 SQL ROWNUMBER 函数进行了自己的分页。
select * from
( select row_number() over (order by pk asc) as rownumber, * from ...)
where row_number between @a and @b
我最终根本没有进行声明性 - 而不是向数据源提供参数(这是可行的),我只是在代码隐藏中管理所有内容,手动设置数据源,手动构建寻呼机。
我这样做的原因是什么?3.5 的 querystringfield 参数处理中的一个错误。
我本可以使用 row_number 处理对象数据源,但如果您不关心,则不必以声明方式执行任何操作。