【发布时间】:2010-08-25 15:51:49
【问题描述】:
所以,这个问题可能有点模糊,但我一直在讨论它:
在设计 Asp.Net 页面时,很多时候您可能只想在页面上放置一个快速而肮脏的 GridView。当你走这条路时,你有各种数据源选项(我通常使用绑定到业务对象的 ObjectDataSource),你也可以手动绑定。
我看到了很多关于哪些数据类型可以在网格中自动提供排序功能的变化。我见过人们将他们的自定义 POCO 集合直接翻译成业务对象中的 DataTable,以便 GridView 可以更轻松地支持这些类型的行为。
您真的可以通过自己处理所有可用事件(OnSorting、OnUpdating 等)从 GridView 中获得许多不同的行为,从长远来看,它最终可以高度定制。即使是这种情况,您也可能会遇到偷偷摸摸的其他小问题,例如无法使用“Enter”键自动执行给定行的更新操作。这是因为页面上的默认按钮可能在 GridView 之外,并且 ASP.Net 只允许您为给定面板指定默认按钮,并且不支持 GridView 模板内的按钮的这种行为。这只是一个例子,请注意。当然还有一个问题是页面是否应该在每次过滤操作时返回数据源,或者整个数据源是否应该缓存在页面上的 ViewState 中以允许过滤/排序而无需访问数据库...
所以这是最终的问题:在需要基本 CRUD 操作的页面上使用 GridView 是否合理,即使这可能意味着将自定义集合转换为某种 DataTable?是否应该完全放弃 GridView 以支持 DataList、ListView 或 Repeater 之类的其他东西?后面的选项当然可能更灵活,但这是否意味着应该为每个场景重新构建 GridView 的默认行选择、编辑、排序等功能?
对此主题的任何合理想法表示赞赏!
【问题讨论】:
标签: gridview listview objectdatasource datalist webforms