Добавление вторичного источника данных в повторитель данных ASP.NET - PullRequest
1 голос
/ 13 октября 2011

У меня есть повторитель данных ASP.NET.В настоящее время он настроен на источник данных, полученный из запроса SQL, следующим образом:

IDataReader dr = GetData(sql);
myRepeater.DataSource = dr;
myRepeater.DataBind();

Это работает нормально, но сейчас я хочу вызвать веб-службу, передав все данные, возвращенныеSQL-запрос и сделать его доступным для повторителя.Итак, мой вопрос, могу ли я манипулировать объектом чтения данных до того, как он будет связан, или ретранслятором данных впоследствии, чтобы достичь этого;например:

IDataReader dr = GetData(sql);

var extraData = CallWS(dr);    
foreach (MyData d in extraData)
{
    dr.AddField(d.Value);
}

myRepeater.DataSource = dr;
myRepeater.DataBind();

1 Ответ

3 голосов
/ 13 октября 2011

Есть много способов сделать это. Вероятно, самый простой способ - поместить значения из первого запроса в коллекцию, зацикливая DataReader, а затем добавляя их в коллекцию. Затем позвоните в веб-службу и добавьте эти результаты в коллекцию. Затем у вас будет коллекция, содержащая все ваши результаты, которые вы можете связать с ретранслятором.

        IDataReader dr = GetData(sql);
        var dataCollection = new List<string>();

        while(reader.Read())
        {
            dataCollection.Add(reader.GetString(1));
        }

        var extraData = CallWS();

        while(extraData.Read())
        {
            dataCollection.Add(extraData.GetString(1));
        }

        myRepeater.DataSource = dataCollection;
        myRepeater.DataBind();

Нечто подобное выше. Это не так уж много лишнего кода. Я знаю, что вы не передаете результаты в веб-сервис, но я бы посоветовал не делать этого по ряду причин:

1) Дополнительная передача данных. Нет смысла передавать результаты в веб-службу для веб-службы, чтобы просто передать их обратно (если они не нужны как часть запроса). 2) Если веб-служба не может функционировать без набора результатов из другого запроса, то веб-служба не очень хорошо инкапсулирована, и можно утверждать, что внешний запрос действительно принадлежит внутри веб-службы, если он является неотъемлемой частью его функционирования.

...