我有一个非常复杂的Linq查询,我似乎无法进入LinqDataSsource以在GridView中使用:
IEnumerable<ticket> tikPart = (
from p in db.comments where
p.submitter == me.id &&
p.ticket.closed == DateTime.Parse("1/1/2001") &&
p.ticket.originating_group != me.sub_unit
select p.ticket
).Distinct();
如何将其添加到GridView中?谢谢!
答案 0 :(得分:3)
gridview.DataSource = tikPart.ToList();
gridview.DataBind();
答案 1 :(得分:3)
@leppie - 将IQueryable作为数据源附加时,无需在IQueryable上调用ToList()。
如果在调用DataBind方法之前未处理DataContext,则ToList是冗余调用。
默认情况下,DataContext使用延迟加载,因此只有在枚举IQueryable时才从数据库中获取数据。 ToList()执行Enumeration并执行调用,DataBind()也是如此。
所以你可以这样做:
using(MyDataContext ctx = new MyDataContext(){
this.MyGridView.DataSource = from something in ctx.Somethings where something.SomeProperty == someValue select something;
this.MyGridView.DataBind();
}
取决于您处理DataContext如何确定绑定到数据源的内容。
然后,您可以在GridView上使用自动生成的列,以便将返回对象中的每个属性转换为列,或者您可以使用设计器编写列并在那里设置绑定规则。
答案 2 :(得分:0)
您可以设置没有数据源的Gridview。设置gridview列,并在codebehind中将结果绑定到网格视图。
答案 3 :(得分:0)
您可以绑定IQueryable&lt;&gt;使用LinqDataSource控件键入GridView。 http://johnsobrepena.blogspot.com/2010/01/data-bind-coolgridview-to-iqueryable.html