在 xml 网格视图中搜索。
Search in a xml gridview.
这是我在 Stack Overflow 上的第一个问题,我会尽可能准确。
我正在开发一个 ASP.NET Web 应用程序,我有一个以 XML 作为数据源的 gridview。我已经将它绑定为数据源,并且运行良好。
我的项目中有一个文本框和一个按钮,想在 gridview 中进行搜索。
这是 XML 文件中节点之一的示例。
https://i.imgur.com/weTlrh1.png
我目前遇到的问题是卡在搜索gridview部分。
正如我之前所说,我有一个文本框和一个按钮,当我在文本框中写一个值并按下按钮时,我想搜索 gridview 及其节点以检查是否有任何标题包含单词的示例从文本框。
现在我有对应的代码:
https://i.imgur.com/l2lz8JL.png
此代码在 buttonSearch Click 事件中。 SearchBookBox.text 是我要在 Gridview 中搜索的文本。
我现在被困住了,我需要一些帮助。
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("/NewFolder1/books.xml"));
GridView1.DataSource = ds;
GridView1.DataBind();
以上代码是我将gridview绑定到对应的xml文件的代码。此代码在我的 Page_Load 事件中。
我尝试了不同的方法来解决这个问题,但都没有效果。
现在的代码是这样的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace BookSearch
{
public partial class BookSearchForm : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ErrorLabel.Visible = false;
AddBooksXML();
}
private void AddBooksXML()
{
if (!IsPostBack)
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("/NewFolder1/books.xml"));
GridView1.DataSource = ds;
GridView1.DataBind();
}
}
protected void BookSearchButton_Click(object sender, EventArgs e)
{
if(SearchBookBox.Text != null)
{
foreach (XmlNode node in ds.GetXml)
{
}
}
else
{
Response.Write("ERROR!");
}
}
}
}
我真的需要一些帮助。正如我所说,我尝试过不同的想法,但我被卡住了,我无处可去。
我认为这是一个可能的解决方案。
protected void XmlSearch(string searchText)
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("/NewFolder1/books.xml"));
var dat = from books in ds.Tables[0].AsEnumerable()
where books.Field<string>("author") == searchText || book.Field<string>("title") == searchText
select books;
GridView1.DataSource = dat.CopyToDataTable();
GridView1.DataBind();
}
这将在作者和标题中搜索完全匹配的内容,这可能不是最佳解决方案,但它是您如何执行此操作的一个示例。
需要
using System.Linq;
编辑
如果你想遍历它们,你可以使用
foreach (var book in dat)
{
var bookInfo = String.Format("{0} {1}", book["author"].ToString(), book["title"].ToString());
}
这是我在 Stack Overflow 上的第一个问题,我会尽可能准确。
我正在开发一个 ASP.NET Web 应用程序,我有一个以 XML 作为数据源的 gridview。我已经将它绑定为数据源,并且运行良好。
我的项目中有一个文本框和一个按钮,想在 gridview 中进行搜索。
这是 XML 文件中节点之一的示例。
https://i.imgur.com/weTlrh1.png
我目前遇到的问题是卡在搜索gridview部分。
正如我之前所说,我有一个文本框和一个按钮,当我在文本框中写一个值并按下按钮时,我想搜索 gridview 及其节点以检查是否有任何标题包含单词的示例从文本框。
现在我有对应的代码:
https://i.imgur.com/l2lz8JL.png
此代码在 buttonSearch Click 事件中。 SearchBookBox.text 是我要在 Gridview 中搜索的文本。
我现在被困住了,我需要一些帮助。
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("/NewFolder1/books.xml"));
GridView1.DataSource = ds;
GridView1.DataBind();
以上代码是我将gridview绑定到对应的xml文件的代码。此代码在我的 Page_Load 事件中。
我尝试了不同的方法来解决这个问题,但都没有效果。
现在的代码是这样的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace BookSearch
{
public partial class BookSearchForm : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ErrorLabel.Visible = false;
AddBooksXML();
}
private void AddBooksXML()
{
if (!IsPostBack)
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("/NewFolder1/books.xml"));
GridView1.DataSource = ds;
GridView1.DataBind();
}
}
protected void BookSearchButton_Click(object sender, EventArgs e)
{
if(SearchBookBox.Text != null)
{
foreach (XmlNode node in ds.GetXml)
{
}
}
else
{
Response.Write("ERROR!");
}
}
}
}
我真的需要一些帮助。正如我所说,我尝试过不同的想法,但我被卡住了,我无处可去。
我认为这是一个可能的解决方案。
protected void XmlSearch(string searchText)
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("/NewFolder1/books.xml"));
var dat = from books in ds.Tables[0].AsEnumerable()
where books.Field<string>("author") == searchText || book.Field<string>("title") == searchText
select books;
GridView1.DataSource = dat.CopyToDataTable();
GridView1.DataBind();
}
这将在作者和标题中搜索完全匹配的内容,这可能不是最佳解决方案,但它是您如何执行此操作的一个示例。
需要
using System.Linq;
编辑
如果你想遍历它们,你可以使用
foreach (var book in dat)
{
var bookInfo = String.Format("{0} {1}", book["author"].ToString(), book["title"].ToString());
}