문제

나는 gridview에서 사용하기 위해 linqdatassource에 들어갈 수없는 꽤 복잡한 linq 쿼리가 있습니다.

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에 어떻게 가져올 수 있습니까? 고맙습니다!

도움이 되었습니까?

해결책

DataSource없이 GridView를 설정할 수 있습니다. GridView 열을 설정하고 CodeBehind에서 그 결과를 그리드보기에 바인딩합니다.

다른 팁

gridview.DataSource = tikPart.ToList();
gridview.DataBind();

@Leppie- 데이터 소스로 첨부 할 때 iqueryable에서 tolist ()를 호출 할 필요가 없습니다.

DataBind Method가 Tolist라고 불리는 DataContext가 폐기되지 않은 경우 중복 호출입니다.

기본적으로 DataContext는 Lazy-Loading을 사용하므로 iqueryable이 열거 될 때 데이터가 데이터베이스에서만 가져옵니다. Tolist ()는 열거를 수행하고 호출을 수행합니다. 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에서 자동 생성 된 열을 사용하여 반환 된 객체의 모든 속성이 열로 바뀌거나 디자이너와 함께 열을 작성하고 바인딩 규칙을 설정할 수 있습니다.

linqdatasource 컨트롤을 사용하여 iqueryable <> 유형을 GridView에 바인딩 할 수 있습니다. http://johnsobrepena.blogspot.com/2010/01/data-bind-coolgridview-to-iqueryable.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top