none
请教高手关于QueryExtender与girdview问题 RRS feed

  • 问题

  • 请问如何返回QueryExtender1过滤后的结果集,或者说返回的结果集可以从哪些途径获取得到的?

    可否返回一个是datatable类型的结果集?

    谢谢!

    • 已移动 Leo Liu - MSFT 2012年3月14日 9:40 Moved for better support. (发件人:Visual C#)
    2012年3月12日 8:16

全部回复

  • 来源:http://www.ibeifeng.com/tech.php?id=46523

    用代码实现筛选

      QueryExtender控件通过使用RangeExpression和SearchExpression使得定义筛选逻辑变得很容易。同样,可以使用CustomExpression或者MethodExpression控件去通过代码的方式去实现筛选逻辑。实际上,当需要应用筛选逻辑时,CustomExpression会触发一个事件,你可以在这个事件里编写相关的处理代码。而MethodExpression则有点不同,你要编写一个静态的方法,并传入一个类型为IQueryable的对象并且返回的对象也是要相同的类型。传入该方法的对象实际上是在筛选逻辑前的一个查询实例,可以在其中编写你需要实现的查询条件,最后要返回这个查询实例。

      下面我们更详细去了解下MethodExpression。假设你要根据登陆了的用户的身份去筛选数据,比如管理员能看到所有产品信息但非管理员只能看到没打折的产品。则我们如上所述在静态方法中,传入IQueryable实例作为参数,返回的也对象类型也必须是IQueryable类型的,如下:

    // C#
    public static IQueryable FilterBasedOnUser(IQueryable query)
    {
    if (Roles.IsUserInRole("Administrators"))
    // Return the querywithout filtering
    return query;
    else
    // Return only non-discontinued products
    return query.Where(p => p.Discontinued == false);
    }
    2012年3月12日 11:01
  • 不管怎样,先谢谢你,我想看看还有没有别的方法能返回QueryExtender过滤后的数据集。
    2012年3月13日 3:31