专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 Web Service返回Data Table方法

Web Service返回Data Table方法

更新时间:2020-09-23 17:30:36 来源:动力节点 浏览1487次

Data Table是一个临时保存数据的网格虚拟表。它可以被应用在 VB 和 ASP 上,无须代码就可以简单的绑定数据库。通常情况下Web Service不能直接返回Data Table,在客户端会报无法序列化的错误。因此,掌握Web Service返回Data Table方法是关键所在。

Web Service返回Data Table的以下三种方案的实质应该都是序列化的:

解决方案一:返回dataset

Web Service中的方法代码如下:

[WebMethod]

public DataSet GetDataSet()

{

DataTable dt=new DataTable("mytable");

DataColumn dc=new DataColumn("id",typeof(string));

dt.Columns.Add(dc);

DataRow dr=dt.NewRow();

dr["id"]="1111111";

dt.Rows.Add(dr);

DataSet ds=new DataSet();

ds.Tables.Add(dt);

return ds;

}

在调用客户端直接使用DataSet

DataSet ds = db.GetDataSet();//db是服务代理类实例

GridView1.DataSource = ds.Tables[0];

GridView1.DataBind();

解决方案二:给返回的datatable命名

webservice文件中

[WebMethod]

public DataTable dt()

{

DataTable dt = new DataTable("default");

dt.Columns.Add("id");

dt.Columns.Add("name");

for (int i = 0; i < 10; i++)

{

DataRow dr = dt.NewRow();

dr["id"] = i.ToString();

dr["name"] = "name" + i.ToString();

dt.Rows.Add(dr);

}

return dt;

}

调用页面中

WebService1.WebService1 service = new WebService1.WebService1();

DataTable dt = service.dt();

gvUser.DataSource = dt;

gvUser.DataBind();

最关键的是在Web Service的方法中为data table命名,否则就会报错。

解决方案三:服务中将Data Table的序列化成xml字符串,调用时候在反序列化成Data Table

#region DataTable序列化和反序列化

///


/// DataTableToXML

///


public static string ConvertDataTableToXML(DataTable dt)

{

return ConvertDataTableToXML(dt, string.Empty);

}

public static string ConvertDataTableToXML(DataTable dt, string aaa)

{

StringWriter sw = null;

try

{

if (dt.TableName == string.Empty)

dt.TableName = "table1";

sw = new StringWriter();

dt.WriteXml(sw, XmlWriteMode.WriteSchema);

return sw.ToString();

}

catch (System.Exception ex)

{

throw ex;

}

finally

{

if (sw != null)

sw.Close();

}

}

///


/// XMLToDataTable

///


public static DataTable ConvertXMLToDataTable(string xmlData)

{

TextReader sr = null;

try

{

DataTable dt = new DataTable();

sr = new StringReader(xmlData);

dt.ReadXml(sr);

return dt;

}

catch (System.Exception ex)

{

throw ex;

}

finally

{

if (sr != null) sr.Close();

}

}

#endregion

以上就是Web Service返回Data Table的三种方法,其中最常用的还是返回dataset,相对来说,更加简单一些。我们在实际的开发过程中也应该学会举一反三,从多个角度多方案的解决问题,实现对自己的能力进阶!


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>