我是在 ASP.NET C# 中使用 Xpath 的新手。我有一个 Gridview 并且能够从 xml 文件中插入/编辑/删除数据。但是我需要能够使用更复杂的 xml 文件来执行相同的任务。有人可以帮助我开始了解如何在我的代码中实现 Xpath 功能吗?
使用以下 xml ex.1,所有功能都符合预期:
<root>
<partNumbers>
<partid>0</partid>
<partnumber>796542</partnumber>
</partNumbers>
<partNumbers>
<partid>1</partid>
<partnumber>225614</partnumber>
</partNumbers>
<partNumbers>
<partid>2</partid>
<partnumber>123457</partnumber>
</partNumbers>
</root>
...但是,我需要使用以下 xml ex.2 文件执行相同的操作,注意:实际文件包含更多内容,但我只是使用以下内容进行测试:
<root>
<pos>
<partNumbers>
<partid>0</partid>
<partnumber>796542</partnumber>
</partNumbers>
<partNumbers>
<partid>1</partid>
<partnumber>225614</partnumber>
</partNumbers>
<partNumbers>
<partid>2</partid>
<partnumber>123457</partnumber>
</partNumbers>
</pos>
</root>
...后面的代码 - 我已经包含了标头指令 System.Xml 和 System.Xml.Xpath (snippet)
protected void BindGridView()
{
DataSet dsgvPartNumber = new DataSet();
dsgvPartNumber.ReadXml(Server.MapPath("~/xml/storeUserInfo.xml"));
gvPartNumber.DataSource = dsgvPartNumber;
gvPartNumber.DataBind();
gvPartNumber.ShowFooter = true;
}
...其余的只是我的插入/编辑/删除等功能,效果很好
.....网格视图:
<asp:GridView ID="gvPartNumber" runat="server" AutoGenerateColumns="False"
onrowdeleting="gvPartNumber_RowDeleting" onrowediting="gvPartNumber_RowEditing"
onrowupdating="gvPartNumber_RowUpdating" onrowcommand="gvPartNumber_RowCommand"
ShowFooter="True" Width="482px"
onrowcancelingedit="gvPartNumber_RowCancelingEdit">
<Columns>
<asp:TemplateField HeaderText="Part ID">
<EditItemTemplate>
<asp:TextBox ID="txtPartID" runat="server" Text='<%# Bind("partID") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtPartIDInsert" runat="server"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="lblPartID" runat="server" Text='<%# Bind("PartID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Part Number">
<EditItemTemplate>
<asp:TextBox ID="txtPartNumber" runat="server" Text='<%# Bind("partNumber") %>'></asp:TextBox>
</EditItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtPartNumberInsert" runat="server"></asp:TextBox>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="lblPartNumber" runat="server" Text='<%# Bind("PartNumber") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">
<EditItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True"
CommandName="Update" Text="Update"></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False"
CommandName="Cancel" Text="Cancel"></asp:LinkButton>
</EditItemTemplate>
<FooterTemplate>
<asp:LinkButton ID="btnInsert" runat="server" CommandName="insertXMLData">Insert</asp:LinkButton>
</FooterTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"
CommandName="Edit" Text="Edit"></asp:LinkButton>
</ItemTemplate>
<ItemStyle Width="120px" />
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
...当我使用 ex.2 运行页面时 - 我收到一个错误:System.Data.DataRowView' 不包含名为“PartID”的属性 - 有人可以为我提供一些关于我将如何进行的方向使用 Xpath 来解决这个问题?