2011-01-07 2 views
0

Я делаю запрос ad-hoc для получения набора идентификаторов, каждый из которых переходит к запросу адаптера таблицы, заполняя строки.Как правильно заполнить 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); 

EDIT: вы можете связать I т до сетки

+0

спасибо, это простое и работоспособное решение. –

Смежные вопросы