【问题标题】:How to Bind Data to a Grid View from an XML file如何从 XML 文件将数据绑定到网格视图
【发布时间】:2019-04-01 09:58:51
【问题描述】:

我目前遇到了这个问题,我正在尝试将数据从 xml 文件绑定到网格视图。我已经在网上搜索并找到了与我类似的问题的解决方案,但是由于某种原因它们没有起作用。 我的以下代码是

索引.aspx

 <asp:GridView ID="gvRegistrations" runat="server" AutoGenerateColumns="false">
        <Columns>
            <%-- ID --%>
            <asp:TemplateField HeaderText="ID">
                <ItemTemplate>
                    <asp:Label ID="lblRegistrations_ID" runat="server" Text='<%# Bind ("id")%>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <%--Full Name--%>
            <asp:TemplateField HeaderText="Full Name">
                <ItemTemplate>
                    <asp:Label ID="lblRegistrations_FullName" runat="server" Text='<%# Bind ("fullName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <%--Email--%>
            <asp:TemplateField HeaderText="Email">
                <ItemTemplate>
                    <asp:Label ID="lblRegistrations_Email" runat="server" Text='<%# Bind("email") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <%--Registration Type--%>
            <asp:TemplateField HeaderText="Registration Type">
                <ItemTemplate>
                    <asp:Label ID="lblRegistrations_RegistrationType" runat="server" Text='<%# Bind ("registrationType") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <%--Attending Social Event--%>
               <asp:TemplateField HeaderText="Attending">
                <ItemTemplate>
                    <asp:Label ID="lblRegistrations_Attending" runat="server" Text='<%# Bind ("attendingSocialEvent") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>  

Registrations.xml

<?xml version="1.0" encoding="UTF-8"?>
<RegistrationCollection>
   <registrations>
      <Registration>
         <id>1</id>
         <fullName>Keiran Bernal</fullName>
         <emailAddress>k.bernal@gmail.com</emailAddress>
         <registrationType>conference only</registrationType>
         <attendingSocialEvent>yes</attendingSocialEvent>
      </Registration>
      <Registration>
         <id>2</id>
         <fullName>Cordelia Pierce</fullName>
         <emailAddress>c.pierce@outlook.com</emailAddress>
         <registrationType>conference and Dinner</registrationType>
         <attendingSocialEvent>no</attendingSocialEvent>
      </Registration>
      <Registration>
         <id>3</id>
         <fullName>Zachery Guy</fullName>
         <emailAddress>z.guy@yahoo.com</emailAddress>
         <registrationType>conference only</registrationType>
         <attendingSocialEvent>yes</attendingSocialEvent>
      </Registration>
      <Registration>
         <id>4</id>
         <fullName>Kiana Hawworth</fullName>
         <emailAddress>k.hawworth@bigpond.com</emailAddress>
         <registrationType>conference and Dinner</registrationType>
         <attendingSocialEvent>no</attendingSocialEvent>
      </Registration>
   </registrations>
</RegistrationCollection>

索引.aspx.cs

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DataSet ds = new DataSet();
        ds.ReadXml(Server.MapPath("~/registrations.xml"));
        gvRegistrations.DataSource = ds;
        gvRegistrations.DataBind();
    }

这类似于我发现的解决方案,但问题是未声明 gvRegistrations 但我不知道应该在哪里或如何声明它。我知道我错过了一些东西,只是不确定是什么......

【问题讨论】:

  • 无需根据您的代码声明 gvRegistrations。由于这是一个带有 runat=server 的控件,它应该是自动可用的。
  • 尝试将gridview与xml绑定时遇到什么错误?
  • 运行此程序时收到的错误是:System.Web.HttpException: 'DataBinding: 'System.Data.DataRowView' 不包含名为 'id' 的属性。'
  • 您有 2 个主节点 &lt;RegistrationCollection&gt;&lt;registrations&gt;。删除一个,绑定将起作用。
  • @VDWWD 谢谢,效果很好

标签: asp.net xml gridview data-binding


【解决方案1】:
<?xml version="1.0" encoding="UTF-8"?>

   <registrations>
      <Registration>
         <id>1</id>
         <fullName>Keiran Bernal</fullName>
         <emailAddress>k.bernal@gmail.com</emailAddress>
         <registrationType>conference only</registrationType>
         <attendingSocialEvent>yes</attendingSocialEvent>
      </Registration>
      <Registration>
         <id>2</id>
         <fullName>Cordelia Pierce</fullName>
         <emailAddress>c.pierce@outlook.com</emailAddress>
         <registrationType>conference and Dinner</registrationType>
         <attendingSocialEvent>no</attendingSocialEvent>
      </Registration>
      <Registration>
         <id>3</id>
         <fullName>Zachery Guy</fullName>
         <emailAddress>z.guy@yahoo.com</emailAddress>
         <registrationType>conference only</registrationType>
         <attendingSocialEvent>yes</attendingSocialEvent>
      </Registration>
      <Registration>
         <id>4</id>
         <fullName>Kiana Hawworth</fullName>
         <emailAddress>k.hawworth@bigpond.com</emailAddress>
         <registrationType>conference and Dinner</registrationType>
         <attendingSocialEvent>no</attendingSocialEvent>
      </Registration>
   </registrations>

感谢@VDWWD,在此处进行更改后,它起作用了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    相关资源
    最近更新 更多