首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么DataSourceSelectArguments是密封的?

为什么DataSourceSelectArguments是密封的?
EN

Stack Overflow用户
提问于 2019-05-29 01:05:36
回答 2查看 0关注 0票数 0

有人知道使DataSourceSelectArguments密封的逻辑吗?

我为一些自定义业务对象和自定义WebControl实现了自定义DataSource(和相关类)。在思考过滤器时(比如在网格中),我发现DataSourceSelectArguments是密封的。当然,我错过了一些东西。(也许这个逻辑与再次询问数据库无意义的事实有关,只是为了过滤?,只是猜测。)

EN

回答 2

Stack Overflow用户

发布于 2019-05-29 09:28:10

抱歉延误,我是在圣日。:)

问题是像ListView这样的DataBoundControl具有SortExpression属性,但不具有FilterExpression。可以通过激活PostBack和Command事件的IButtonControl WebControl实现带有ListView的可排序网格/列表。然后使用SortExpression或Sort方法并传递一个排序表达式,该表达式将填充DataSourceSelectArguments.SortExpression并将其传递给DataSource,DataSource可以构造适当的SQL语句(在我的例子中)以从DB检索数据。这允许数据和显示它的WebControl之间的分离,恕我直言。

按照这种模式,我打算通过在我的DataSourceSelectArguments中使用请求的过滤器填充额外的参数对象来实现过滤器,我将调用Sort,它将把这个arguments对象传递给DataSource,在那里我将构建适当的select子句。

我最后通过在SortExpression中“编码”过滤器信息来解决它,但我发现它很丑陋(对于名称,首先是:sort!= filter),我想知道是否有更合适的做法这或如果我错过了一些更微妙的东西。

编辑

也许一个更好的办法是重写ListViewPerformSelect方法,问我自己实现的DataSourceView,如果它可以过滤,然后调用一个特殊的ExecuteSelect,它接受一个特殊的方法,DataSourceSelectArguments用滤镜对象。当然,当有人使用ListView非增强版的自定义时,请注意不要做任何会破坏的事情DataSourceView

票数 0
EN

Stack Overflow用户

发布于 2019-05-29 10:55:12

我的猜测是因为该类是一个愚蠢的数据传输对象,仅用于将参数传递给方法。

这个类本身没有定义任何操作,因此你期望什么样的多态?例如,现有方法只能知道这个类的属性,这些属性都是可设置的,因此不需要覆盖属性。如果添加了新属性,它们将被忽略。

对于您自己的方法,您是否可以创建自己的Arguments类,恰好具有所有相同的属性?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档