Web Service返回Data Table方法 - 极悦
首页 课程 师资 教程 报名

Web Service返回Data Table方法

  • 2020-09-23 17:30:36
  • 1275次 极悦

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,相对来说,更加简单一些。我们在实际的开发过程中也应该学会举一反三,从多个角度多方案的解决问题,实现对自己的能力进阶!


选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交