【问题标题】:How to Use GridView to display XML Web Response By Attribute Name Instead of DataSet Column Name如何使用 GridView 按属性名称而不是 DataSet 列名称显示 XML Web 响应
【发布时间】:2015-06-29 15:36:20
【问题描述】:

我正在尝试使用 ASP.Net 表单 GridView 显示 XML Web 响应。我是 .NET 框架的新手,所以我在处理一些细节问题。

我正在开发一个搜索引擎,因此 XML 响应是搜索特定短语或单词的结果。这是 XML 响应的示例

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">8</int>
<lst name="params">
<str name="qf">recordkey</str>
<str name="df">text</str>
<str name="echoParams">all</str>
<str name="indent">true</str>
<str name="wt">xml</str>
<str name="q">*:*</str>
</lst>
</lst>
<result name="response" numFound="281" start="0">
<doc>
<str name="Date Created">2014-10-30</str>
<str name="Facility">*****</str>
<str name="Author">*********</str>
<str name="Source System ID">*******</str>
<str name="Data Source">************</str>
<str name="Title">ENGINEERING INITIATION</str>
<long name="_version_">1504985395557826560</long>
</doc>
<doc>
<str name="Date Created">2011-09-30</str>
<str name="Facility">*********</str>
<str name="Author">************</str>
<str name="Source System ID">***</str>
<str name="Data Source">***************</str>
<str name="Title">USE OF REGISTERED....</str>
<long name="_version_">1504985395859816448</long>
</doc>
<doc>.....
  ...........

我屏蔽了一些内容,但你明白了。

收到响应后,我使用 StreamReader 读取 xml 并将其放入 XMLDocument。

  XmlDocument myXMLDocument = new XmlDocument();

            GridView1.DataSource = myXMLDocument; 

            StreamReader myXMLReader = new StreamReader(response.GetResponseStream());

            ds.ReadXml(myXMLReader);

            GridView1.DataSource = ds.Tables["str"];

            GridView1.DataBind();

之后,我将其加载到 DataSet 并将表“str”绑定到产生此结果的 Gridview

name	              str_Text	              lst_Id	doc_Id
qf                     recordkey                1	     
df                      text                    1	 
echoParams               all                    1	 
indent                  true                    1	 
wt                      xml                     1    	 
q                       *fire*                  1	 
Date Created          2014-10-30                          0
Facility                *****                             0
Author                  ****                              0
Source System ID        ***                               0
Data Source             ****                              0
Title                    ****                             0
Date Created         2011-09-30                           1
Facility                ****                              1
Author                  ****                              1
Source System ID        ****                              1
Data Source             *****                             1
Title               USE OF REGISTERED...                  1
Date Created        2011-11-03                            2
Facility                ****                              2
Author                 *****                              2
Source System ID        ***                               2
Data Source           *******                             2
Title                REQUEST...                           2

现在,问题是,我在组织网格视图中的内容时遇到了问题。它仅将列名识别为字段名。我希望能够将信息组织成更典型的搜索格式,例如

创建日期 - “后面是标题”

作者姓名

但我无法操纵这些东西,因为它们不被视为字段。所以我的首要问题。如何使用gridview,以便可以基于属性而不是数据集中的列名进行操作?我是否必须以不同的方式将其绑定到网格?是否有需要编码的类型(如按文档 ID)?我真的不在乎我只需要能够做到的方法。

【问题讨论】:

    标签: c# asp.net xml gridview


    【解决方案1】:

    您可以使用以下 linq 从数据集中提取数据

                var results = ds.Tables["str"].AsEnumerable()
                    .Where(x => x.Field<string>("name") == "qf")
                    .Select(y => y.Field<string>("str_Text"));​
    

    我不认为上面的代码是最好的解决方案。我认为像文本文档一样逐行解析会产生更好的结果。尝试使用如下代码的树视图: Recursive adding XML into TreeView

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      • 2015-03-31
      • 1970-01-01
      相关资源
      最近更新 更多