2014-07-16 2 views
0

안녕하세요. 미리 감사드립니다.IQueryable을 사용하여 ID를 사용하여 gridview를 필터링합니다.

내 gridview를 변경하는 몇 가지 기능이 있습니다. 따라서 현재보기에서 무엇이 필요한지 알기 위해 ID를 추적하고 싶습니다. 아래 현재 코드 : VS2013에서

public void getCurrent_GridView() 
{ 

    if (GridViewFacility.DataKeys.Count > 0) 
    { 
     WISSModel.WISSEntities context = new WISSModel.WISSEntities(); 

     //Prepare to build a "Base" query: 
     IQueryable<WISSModel.Base> searchListQuery = context.Bases; 

     for (int i = 0; i < GridViewFacility.Rows.Count; i++) 
     { 
      String id = GridViewFacility.DataKeys[i].Value.ToString(); 

      //Refine query, one search term at a time 
      searchListQuery = 
      searchListQuery.Where(p => p.isDeleted == false && (p.BaseId.ToString().Contains(id))); 


      //txtSearch.Text += id + " "; 
     } 

     txtSearch.Text = "test" + searchListQuery.ToList().Count; 

     GridViewFacility.DataSource = searchListQuery.ToList(); 
     GridViewFacility.DataBind(); 
    } 
} 

protected void GridViewFacility_RowEditing(object sender, GridViewEditEventArgs e) 
{ 

    getCurrent_GridView(); 
    GridViewFacility.EditIndex = e.NewEditIndex; 
    LoadData(); 

} 

, 나는이 오류 얻을 :

An exception of type 'System.NotSupportedException' occurred in System.Data.Entity.dll but was not handled in user code

Additional information: LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.

답변

0

글쎄, 메시지는 오히려 분명, 당신은 당신이 엔티티에 LINQ에서 .ToString()

를 사용할 수있다 SqlFunctions.StringConvert ...을 사용하여 숫자 값을 문자열로 변환 할 수 있습니다. 그것은 십진법과 더블에서만 가능하지만 int를 double 형으로 변환 할 수 있습니다.

나는 당신의 오류가 BaseId가 INT는

p.BaseId.ToString().Contains(id) 

경우, 당신은 내가 더 이상 그 오류를받지 못했습니다

SqlFunctions.StringConvert((double)p.BaseId).Contains(id) 
+0

Althaus 감사하여이를 대체 할,하지만 내 쿼리 수있는 라인에 맞춰 count는 데이터 소스에 데이터를 넣지 않은 루프 외부에 0이옵니다. – Neo84

+0

@ Neo84 글쎄요, 당신이 필요로 할 때 AND 절과 같은 것을하고있는 당신의 "누적"을 추측 할 수 있을까요? 그 코드로 대답하기가 쉽지 않다 ... –

+0

아아아 맞습니다. 또는 도움이되었지만, DB의 행이 무엇이든 계산하면 그리드 뷰의 현재 상태가 아닙니다. 어떤 일이 일어나는 지 생각 해봐. 이것이 IQueryable을 사용하려는 이유입니다. – Neo84

관련 문제