将Webservice响应绑定到GridView中

时间:2016-03-09 08:12:13

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

我的网络服务返回XML字符串Response。我有这些数据在Grid-view上显示它。怎么办? 我的网络服务的请求和响应代码

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>
&#13;
&#13;
&#13;

这是我如何绑定网格

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。

1 个答案:

答案 0 :(得分:2)

ReadXml()会返回XmlReadMode,您无法将其分配为DataSource,这就是您获得例外的原因。相反,您希望填充DataSet并将其分配为DataSource在单独的行中:

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