我的asp.net数据网格无法读取xml文件

时间:2017-09-01 18:27:34

标签: asp.net xml sharepoint

这是我第一次使用asp.net,如果这是一个愚蠢的问题,请接受我的道歉。

我正在尝试创建一个可以在我们的工作共享点上运行的Web应用程序。这个想法是一个团队,人们可以选择何时可以打电话,如果他们是当天的联络点,那么不同楼层的人可以在没有视线的情况下看到他们的可用性。

我通常会制作一个基本的PHP脚本,但sharepoint不喜欢php,我们无法引用网络上的外部资源。

我遇到的问题是应该从xml中提取数据的表只是一个空白页...最初它给出了一个错误,说它找不到数据字段,我意识到我需要使用xpath来更具体...它现在不会给出任何错误,比如找到该字段但没有绘制它。代码如下:

XML database:
<?xml version="1.0" encoding="utf-8" ?>
<CRM>
  <agent>
    <id>user1</id>
    <name>name</name>
    <turret>extension</turret>
    <email>email</email>
    <status>XXXXX</status>
    <contact>N/A</contact>
  </agent>
  <agent>
    <id>user2</id>
    <name>Name 2</name>
    <turret>extension</turret>
    <email>email</email>
    <status>XXXXX</status>
    <contact>N/A</contact>
  </agent>
  <agent>
    <id>user3</id>
    <name>Name 3</name>
    <turret>Extension Number</turret>
    <email>email address</email>
    <status>XXXXX</status>
    <contact>N/A</contact>
  </agent>
</CRM> 

和应该提取数据的数据网格在这里:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="CSTvisibility.aspx.vb" Inherits="CRM_availabilty.CSTvisibility" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:XmlDataSource ID="data" runat="server" DataFile="~/crmdata.xml" XPath="/agent"></asp:XmlDataSource> 
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BorderStyle="Ridge" DataSourceID="data">
                <Columns>
                    <asp:BoundField DataField="name" HeaderText="CRM Agent" />
                    <asp:BoundField DataField="turret" HeaderText="Turret" />
                    <asp:BoundField DataField="email" HeaderText="Email" />
                    <asp:BoundField DataField="status" HeaderText="Available" />
                    <asp:BoundField DataField="contact" HeaderText="Contact Point" />
                </Columns>
            </asp:GridView>

        </div>
    </form>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

切换到TemplateField而不是BoundField。然后您就可以访问XPath

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataSourceID="data">
    <Columns>
        <asp:TemplateField HeaderText="CRM Agent">
            <ItemTemplate>
                <%# XPath("name") %>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Turret">
            <ItemTemplate>
                <%# XPath("turret") %>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Email">
            <ItemTemplate>
                <a href="mailto:<%# XPath("email") %>"><%# XPath("email") %></a>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

XmlDataSource中的XPath必须为XPath="CRM/agent"