ASP.NET动态数据向页面添加附加筛选条件

8

我应该如何向动态数据 Web 应用程序添加附加的搜索/筛选条件?

我使用 Northwind 数据库创建了一个动态数据 Web 应用程序,并在 Employees 表上使用自定义页面(基于 ListDetails.aspx 页面模板)。我想向页面添加其他搜索/筛选/where 参数。默认情况下,where 参数集合是基于 FilterRepeater 控件动态创建的,该控件也是基于 Employee Table 的“外键”关系动态创建的。

为了添加其他搜索条件,我已经连接到 GridView 的 LinqDataSource 的 Selecting 事件,并尝试将其他项添加到 LinqDataSourceSelectEventArgs 的 WhereParameters 集合中。

问题是我无法指定需要执行的比较类型。WhereParameters 集合只接受字符串和对象,但不知道如何比较它们。我真正想做的是添加到谓词委托的集合中...

我应该如何向此页面添加其他搜索条件?通过应用于 LINQ To SQL 实体的属性(如果是这样,如何操作)?如果条件不是基于实体本身,我该如何添加到搜索条件中?

Aaron Hoffman


除了下面的答案之外,DD论坛虽然加载速度较慢,但目前是关于DD最好的信息来源,不幸的是。 - jlembke
2个回答

7
如果您想向应用程序添加自己的标准,而这些标准动态数据未能为您自动提供,那么您需要前往DynamicDataFiltering执行此操作。动态数据本身目前不支持自定义筛选和搜索,但实现起来并不困难。Josh Heyes在其中做得非常出色。
如果您发现这不完全是您所寻找的,请回来看看。
编辑: 此外,如果您只打算对显示的数据进行进一步过滤,您可以编写类似于以下内容的代码(也许是在Page_Init中),而不使用Josh的筛选项目:
GridDataSource.WhereParameters.Add(new Parameter("it.myColumn", TypeCode.Int32, myValue));

进行“in”或“contains”操作比这更加复杂,需要使用DynamicDataFiltering。


我尝试按照Josh的指示将LinqDataSource转换为DynamicLinqDataSource,但我从未像他所说的那样在“操作弹出窗口中看到名为UpgradeDataSource”的操作。你有这种情况吗? - Jason Marcell
@jlembke,我会的,但与此同时,你能够解决它吗? - Jason Marcell
Jason,我的意思是,我认为我已经执行了那个操作,但我的记忆有点模糊。很抱歉没有更多的帮助。 - jlembke
这个答案适用于ASP.NET 3.5动态数据,但在DD 4.0中现在已经支持了。Oleg的答案/博客文章详细描述了它。 - Aaron Hoffman

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接