【问题标题】:Bind Webservice response into GridView将 Webservice 响应绑定到 GridView
【发布时间】:2016-06-23 12:12:06
【问题描述】:

我的网络服务返回 XML 字符串 Response 。我有这些数据可以在网格视图上显示。怎么做? 我的网络服务的请求和响应代码

string requestXml2 = requestXml.ToString();
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(destinationUrl);
        byte[] bytes;
        bytes = System.Text.Encoding.ASCII.GetBytes(requestXml2);
        request.ContentType = "text/xml; encoding='utf-8'";
        request.ContentLength = bytes.Length;
        request.Method = "POST";
        Stream requestStream = request.GetRequestStream();
        requestStream.Write(bytes, 0, bytes.Length);
        requestStream.Close();
        HttpWebResponse response;
        response = (HttpWebResponse)request.GetResponse();
        if (response.StatusCode == HttpStatusCode.OK)
        {
            Stream responseStream = response.GetResponseStream();
            string responseStr = new StreamReader(responseStream).ReadToEnd();
            return responseStr ;
        }

这段代码返回这个 XML 字符串

<?xml version="1.0" encoding="UTF-8"?><result command="searchhotels" tID="1457501395000001" ip="116.69.241.79" date="2016-03-09 05:29:59" version="2.0" elapsedTime="4.4613111019135"><currencyShort>USD</currencyShort><hotels count="17"><hotel runno="0" preferred="no" cityname="DUBAI" order="3" hotelid="911475"><from>398.4681<formatted>398.47</formatted></from><availability>available</availability></hotel><hotel runno="1" preferred="no" cityname="DUBAI" order="3" hotelid="444505"><from>412.8173<formatted>412.82</formatted></from><availability>available</availability></hotel><hotel runno="2" preferred="no" cityname="DUBAI" order="3" hotelid="149176"><from>397.3643<formatted>397.36</formatted></from><availability>available</availability></hotel><hotel runno="3" preferred="no" cityname="DUBAI" order="3" hotelid="1031048"><from>488.6109<formatted>488.61</formatted></from><availability>available</availability></hotel><hotel runno="4" preferred="yes" cityname="DUBAI" order="3" hotelid="1253328"><from>493.5906<formatted>493.59</formatted></from><availability>available</availability></hotel><hotel runno="5" preferred="no" cityname="DUBAI" order="3" hotelid="994075"><from>441.5159<formatted>441.52</formatted></from><availability>available</availability></hotel><hotel runno="6" preferred="no" cityname="DUBAI" order="3" hotelid="1466928"><from>432.6856<formatted>432.69</formatted></from><availability>available</availability></hotel><hotel runno="7" preferred="no" cityname="DUBAI" order="3" hotelid="31264"><from>441.5159<formatted>441.52</formatted></from><availability>available</availability></hotel><hotel runno="8" preferred="no" cityname="DUBAI" order="3" hotelid="71964"><from>430.478<formatted>430.48</formatted></from><availability>available</availability></hotel><hotel runno="9" preferred="yes" cityname="DUBAI" order="3" hotelid="1420308"><from>264.9095<formatted>264.91</formatted></from><availability>available</availability></hotel><hotel runno="10" preferred="yes" cityname="DUBAI" order="3" hotelid="838245"><from>483.6342<formatted>483.63</formatted></from><availability>available</availability></hotel><hotel runno="11" preferred="yes" cityname="DUBAI" order="3" hotelid="31084"><from>353.2127<formatted>353.21</formatted></from><availability>available</availability></hotel><hotel runno="12" preferred="no" cityname="DUBAI" order="3" hotelid="275975"><from>397.3643<formatted>397.36</formatted></from><availability>available</availability></hotel><hotel runno="13" preferred="no" cityname="DUBAI" order="3" hotelid="1066898"><from>432.6856<formatted>432.69</formatted></from><availability>available</availability></hotel><hotel runno="14" preferred="yes" cityname="DUBAI" order="3" hotelid="31434"><from>386.9073<formatted>386.91</formatted></from><availability>available</availability></hotel><hotel runno="15" preferred="no" cityname="DUBAI" order="3" hotelid="92008"><from>440.4121<formatted>440.41</formatted></from><availability>available</availability></hotel><hotel runno="16" preferred="no" cityname="DUBAI" order="3" hotelid="615835"><from>375.2885<formatted>375.29</formatted></from><availability>available</availability></hotel></hotels><successful>TRUE</successful></result>

这就是我绑定网格的方式

WebService service = new WebService();
 string xml = service.FindCountry();\\ getting xml string 
        DataSet ds = new DataSet();
        XmlTextReader reader = new XmlTextReader(new StringReader(xml));
           GridView1.DataSource = (ds.ReadXml(reader));
            GridView1.DataBind(); 

绑定gridview时获取异常

  • 数据源是无效类型。它必须是 IListSource, IEnumerable 或 IDataSource。

【问题讨论】:

    标签: c# xml web-services gridview xml-parsing


    【解决方案1】:

    ReadXml() 返回XmlReadMode,您不能将其指定为DataSource,这就是您遇到异常的原因。相反,您想填充 DataSet 并将其分配为 DataSource 在单独的行中:

    DataSet ds = new DataSet();
    XmlTextReader reader = new XmlTextReader(new StringReader(xml));
    ds.ReadXml(reader);
    GridView1.DataSource = ds;
    GridView1.DataBind(); 
    

    【讨论】:

      猜你喜欢
      • 2011-08-05
      • 1970-01-01
      • 2018-09-16
      • 2010-09-18
      • 1970-01-01
      • 2013-04-29
      • 2011-07-09
      • 2011-04-05
      • 2012-05-09
      相关资源
      最近更新 更多