如果文本与C#中的XML文件中的数据匹配,则显示结果

时间:2016-06-10 03:53:21

标签: c# asp.net xml

我目前有一个XML文件,在提交文本数据时会保存信息。我还有一个TextBox和Button,供用户搜索他们提交的信息。

例如,我希望用户能够搜索注册号,一旦他们按下搜索按钮,结果将仅显示完全匹配。我目前通过GridView绑定了XML数据,我目前正在为搜索部分使用未完成的if / else语句,但是除非我在if / else语句中输入确切数据,否则数据不会显示在客户端。有什么选择可以解决这个问题?

这是C#

protected void Searchbutton_Click(object sender, EventArgs e)
{
    DataSet ds;
    string filepath = Server.MapPath("~/App_Data/RegData.xml");
    ds = new DataSet();
    ds.ReadXml(filepath);
    RES.DataSource = ds.Tables[1].DefaultView;
    RES.DataBind();

    var sr = Searchreg.Text;
    var dss = Convert.ToString(ds);
    if (sr.Equals("12345678"))
    {
        RES.DataSource = ds.Tables[1].DefaultView;
    }
    else
    {
        none.Visible = true;
        RES.Visible = false;
    }
}

这是来自aspx页面

<table>
   <tr>
      <td>
         <asp:TextBox runat="server" ID="Searchreg"></asp:TextBox>
      </td>
      <td>
         <asp:Button runat="server" ID="Searchbutton" Text="Search" OnClick="Searchbutton_Click" />
      </td>
   </tr>
   <tr>
      <td>
         <asp:GridView runat="server" ID="RES" CellPadding="4" AutoGenerateColumns="false">
            <Columns>
               <asp:BoundField HeaderText="Registration" DataField="Registration" />
            </Columns>
         </asp:GridView>
      </td>
      <td>
         <asp:Label runat="server" ID="none" Text="No Results" Visible="false"></asp:Label>
      </td>
   </tr>
</table>

这是XML文件中的一个示例:

<registration>
    <own>
        <Name>afadf</Name>
        <Address>afaf</Address>
        <Number>adfad</Number>
        <Registration>12345678</Registration>
        <BoatLength>adfd</BoatLength>
        <ManufacturerYear>adf</ManufacturerYear>
        <LeaseStart>16/06/2016</LeaseStart>
        <LeaseEnd>24/06/2016</LeaseEnd>
        <Cost>Total Cost: $40</Cost>
    </own>
    <lease></lease>
</registration>

1 个答案:

答案 0 :(得分:0)

您可以向DataTable

提供RowFilter
DataView dv = ds.Tables[1].DefaultView;
dv.RowFilter = "registration = " + Searchreg.Text; // use correct column name.
RES.DataSource = = dv;