2011-01-07 3 views
0

ID 세트를 가져 오는 임시 쿼리를 수행하고 있습니다. 각 테이블 어댑터의 쿼리로 이동하여 행을 채 웁니다.다중 테이블 어댑터 쿼리의 행과 함께 DataGridView를 올바르게 채우려면 어떻게해야합니까?

그러나 테이블 어댑터에서 ClearBeforeFill 속성을 사용하는 것 이외의 다른 방법을 찾아 낼 수는 없습니다.

이 모든 코드가 작동하지만 나는 해킹 같은 느낌입니다.

누구나 올바른 방법을 알고 있습니까/더 좋은 방법이 있나요? (참고 : 내가 알고 인라인 SQL이 좋지 않은거야)

var db = new Data.PRDataDataContext(); 
    verifiedLineItemsTableAdapter.ClearBeforeFill = true; 
    bool flag = true; 
    foreach (var affid in db.ExecuteQuery<int>(
     @" 
     SELECT Item.affid   
     FROM dbo.Item INNER JOIN 
       dbo.Affiliate ON dbo.Item.affid = dbo.Affiliate.affid 
     WHERE Affiliate.name={0} 
     UNION 
     SELECT affid 
     FROM dbo.Publisher 
     WHERE name={0}" 
     , name)) 
    { 
     Console.WriteLine("got " + affid); 
     verifiedLineItemsTableAdapter.FillByAffId(
      publisherReportDataSet1.VerifiedLineItems, affid); 
     if (flag) 
     { 
      verifiedLineItemsTableAdapter.ClearBeforeFill = false; 
      flag = false; 
     } 
    } 

답변

0

내가 2 개 별도의 기능으로 분할 한 다음이

List<int> getItemAffid(string Name) {....//your code here to return a list} 

List<int> getPublisherAffid(string Name) {....//your code here to return a list} 

과에 최대 이후

유사를 결합 할 것입니다 최대

var SearchItemAffid = from a in getItemAffid(<your var>) select a; 
var SearchedPublisherAffid = from a in getPublisherAffid(<your var>) select a; 

var Combined = SearchedPublisherAffid.Union(SearchItemAffid); 

편집을 그들과 합류 :을 수행 할 수 있습니다 그럼 내가 결박 그리드에

DataGrid.Datasource = Combined 
+0

감사합니다, 이것은 간단하고 실행할 수있는 솔루션입니다. –