Источник данных Linq To Xml для вида сетки не работает. Сетка показывает без строк - PullRequest
0 голосов
/ 30 июня 2010

Я получаю немного XML от службы. Я хотел бы, чтобы это был источник данных вида сетки на моей странице aspx. Вот образец Xml

  <?xml version="1.0" encoding="utf-16" ?> 
<ArrayOfTripTollCompleteDC xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <TripTollCompleteDC>
     <TripTollId>5</TripTollId> 
     <DMSLaneModeID xsi:nil="true" /> 
     <HOVOnly>false</HOVOnly> 
     <CreateDateTime>2010-06-07T15:54:01.023</CreateDateTime> 
     <ConfigVTMSDelaySeconds>5</ConfigVTMSDelaySeconds> 
   </TripTollCompleteDC>

и вот мой код, который анализирует xml и пытается связать сетку. Что мне здесь не хватает?

var retVal = service.GetTripDetailsByTripID(tripId);

            var xmlTrips = XDocument.Parse(retVal);
            var tripTolls =
                from t in xmlTrips.Elements("TripTollCompleteDC")
                select new {
                    TripTollId = (int)t.Element("TripTollId")
                    , DMSLaneModeID = (int?)t.Element("DMSLaneModeID")
                    , HOVOnly = (bool)t.Element("HOVOnly")
                    , CreateDateTime = (DateTime)t.Element("CreateDateTime")
                    , ConfigVTMSDelaySeconds = (int)t.Element("ConfigVTMSDelaySeconds")
                };

            grdTripDetails.DataSource = tripTolls;
            grdTripDetails.DataBind();

Я понимаю, что это анонимные типы. Это проблема? Я подтвердил, что служба возвращает Xml, как указано выше. Кто-нибудь может указать мне правильное направление? Большое спасибо за любые советы.

Просто для полноты, вот разметка сетки

 <asp:GridView runat="server" ID="grdTripDetails" />

Приветствия
~ ck в Сан-Диего

1 Ответ

1 голос
/ 30 июня 2010

Попробуйте это:

 from t in xmlTrips.Root.Elements("TripTollCompleteDC")

Обратите внимание на добавление Root там. Есть только один элемент верхнего уровня, и это не TripTollCompleteDC.

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

  • Разбор и преобразование XML
  • Создание вида сетки

Вы можете проверить первую точку с помощью регистрации - зарегистрируйте преобразованные значения любым способом, который вы обычно делаете при регистрации. Черт возьми, вы можете даже использовать отдельное консольное приложение для тестирования. (Это то, что я только что сделал.)

Вы можете проверить вторую точку, жестко закодировав некоторые данные и перезагрузив страницу - она ​​показывает, как вы ожидаете? Если нет, то настройте код, пока он не сделает то, что вы хотите.

Разделение этих двух проблем делает намного более легким для решения проблемы.

...