1

用户.xml

<?xml version="1.0" encoding="utf-8" ?>
<users>
  <user id="1300" name="Cindy" password="1234" userType="borrower"/>
  <user id="1301" name="andy98" password="9999" userType="borrower"/>
  <user id="1302" name="Alex" password="alex99" userType="borrower"/>
  <user id="1399" name="admin" password="admin" userType="administrator"/>
</users>

默认.aspx.cs

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("User.xml"));
gridView.DataSource = xmlList;
gridView.DataBind();

这将导致输出所有用户中的哪个,但我只想输出那些userTypeborrower; 我怎样才能以这种方式过滤它?我尝试使用以下方法,但没有任何反应。

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("User.xml"));
XmlNodeList xmlList = xmlDoc.DocumentElement.SelectNodes("users/user[@userType='borrower']");
gridViewUser.DataSource = xmlList;
gridViewUser.DataBind();

默认.aspx

<Columns>
    <asp:BoundField DataField="name" HeaderText="Borrower Name" SortExpression="name" />
        <asp:BoundField DataField="id" HeaderText="Borrower ID" SortExpression="id" />
</Columns>

我期望的输出:

Borrower ID | Borrower Name
  Cindy     |  1300
  andy98    |  1301
  Alex      |  1302
4

1 回答 1

1

在您的 xpath 中使用/users或://users

XmlNodeList xmlList = xmlDoc.DocumentElement.SelectNodes("/users/user[@userType='borrower']");


尝试<asp:TemplateField>代替<asp:BoundField>,然后您需要使用以下内容自己将其格式化为表格形式<asp:HeaderTemplate>, <asp:FooterTemplate>

<asp:HeaderTemplate>
    <table>
      <tr>
        <td>
          <span>Borrower ID</span>
        </td>
        <td>
          <span>Borrower Name</span>
        </td>
      </tr>
</asp:HeaderTemplate>
<asp:TemplateField>
    <ItemTemplate>
      <tr>
        <td>
          <asp:Label runat="server" Text='<%# Eval("id") %>'></asp:Label>
        </td>
        <td>
          <asp:Label runat="server" Text='<%# Eval("name") %>'></asp:Label>
        </td>
      </tr>
    </ItemTemplate>
</asp:TemplateField>
<asp:FooterTemplate>
    </table>
</asp:FooterTemplate>
于 2013-07-21T08:10:42.163 回答