【问题标题】:Linq To Xml datasource for grid view is not working. The grid show no rows用于网格视图的 Linq To Xml 数据源不起作用。网格不显示行
【发布时间】:2010-06-30 17:11:00
【问题描述】:

我正在从服务中返回一些 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 在圣地亚哥

【问题讨论】:

    标签: asp.net linq data-binding linq-to-xml ienumerable


    【解决方案1】:

    试试这个:

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

    注意其中添加了Root。只有一个顶级元素,而且不是 TripTollCompleteDC。

    您可能需要自动生成列 - 我不知道网格视图。这提出了一个关于调试这类事情的有用观点。这里有两个潜在的问题:

    • 解析和转换 XML
    • 生成网格视图

    您可以通过记录测试第一个点 - 以您通常记录的任何方式记录转换后的值。哎呀,您甚至可以只使用单独的控制台应用程序进行测试。 (这就是我刚刚所做的。)

    您可以通过硬编码一些数据并重新加载页面来测试第二点 - 它是否显示了您的预期?如果没有,请调整代码,直到它符合您的要求。

    将这两个问题分开会使解决问题更容易

    【讨论】:

      猜你喜欢
      • 2013-12-06
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 2013-05-30
      相关资源
      最近更新 更多