Как правильно заполнить DataGridView строками из запросов адаптера таблицы множественных чисел? - PullRequest
0 голосов
/ 07 января 2011

Я делаю специальный запрос, чтобы получить набор идентификаторов, каждый из которых идет в запрос адаптера таблицы, заполняя строки.

Однако я не могу найти другой способ очистки, кроме использования свойства 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;
        }
    }

1 Ответ

0 голосов
/ 07 января 2011

Я бы разделил его на 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
...