0

最近我注意到 GridView 的分页机制有一个微妙的限制。有效的分页,加载刚刚请求的数据页面,只有使用像 ObjectDataSource 这样的 DataSource 控件才可能实现,这意味着声明性数据绑定,并且在不使用数据源并且仅来自代码隐藏(MSDN 在此处描述)时是不可能的。

这是否意味着 ASP.NET 是基于声明式编程而不是背后的代码?并且默认情况下进行声明式编程会更好吗?

4

3 回答 3

1

开箱即用的 WebForms 试图引导您走上声明式的道路。您可以绕过它并实际编写代码,但 WebForms 使这变得极其困难。

如果您真的想拥有控制权,那么您应该查看 ASP.NET MVC 框架。

于 2010-09-24T21:04:07.077 回答
1

ASP.Net 两者都使用:标记是声明性的,代码隐藏是命令性的。

您应该倾向于一种导致更多声明性代码的样式 - 例如,构建用户控件。但是这些控件仍然需要命令式代码来告诉它们如何操作。

于 2010-09-24T21:08:50.203 回答
0

我最终使用 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 处理对象数据源,但如果您不关心,则不必以声明方式执行任何操作

于 2010-09-24T21:00:38.470 回答