ผมจึงอยากเปลียน จากเปลียน dataset เป็น array Object แทน ครับ
ผมทำตามตัวอย่างตามเว็บไซต์ด้านล่างครับ มัน error นะครับ ผมดูตัวอย่างยังไม่ละเอียดเท่าไหร่ครับ
ขอตัวอย่าง soure code หน่อยครับเอาละเอียดกว่าตัวอย่างหน่อยนะครับ
http://www.bloggang.com/viewdiary.php?id=w...p=2&gblog=4
อยากให้เป็น return เป็น array แบบตัวอย่าง xml นี้ครับ
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfProvince xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/webSerOR/Service1">
<Province>
<Name>กรุงเทพมหานคร</Name>
<Id>10</Id>
</Province>
<Province>
<Name>สมุทรปราการ</Name>
<Id>11</Id>
</ArrayOfProvince>
==================== code ที่ผมแก้ตามเว็บไซต์ด้านล่างครับ แต่มัน error ครับไม่รู้ต้องเพิ่มเติมอะไรอีกหรือเปล่า ช้วยแนะด้วยครับ ====
http://www.bloggang.com/viewdiary.php?id=w...p=2&gblog=4
-------------------------------------------------------------------------------------------------------
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Configuration;
using System.Data.OleDb;
using System.Data.SqlClient;
namespace Metsai
{
/// <summary>
/// Summary description for Service1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
string strConn = ConfigurationManager.ConnectionStrings["strConn"].ConnectionString;
OleDbConnection conn;
OleDbCommand com;
OleDbDataReader dr;
OleDbDataAdapter dt;
public Service1()
{
//Uncomment the following line if using designed components
//InitializeComponent();
}
[WebMethod]
public Food[] Display(string prov, string amphur, string type, string key)
{
conn = new OleDbConnection(strConn);
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();
string field;
if (prov != "" && amphur != "" && type != "")
{
field = " WHERE(AmpID=" + amphur + " AND Ref_PlaFoodShopType_ID=" + type + " AND PlaFood_Name LIKE '%" + key + "%')";
}
else if (prov != "" && type != "")
{
field = " WHERE(ProvID=" + prov + " AND Ref_PlaFoodShopType_ID=" + type + " AND PlaFood_Name LIKE '%" + key + "%')";
}
else if (prov != "")
{
field = " WHERE(ProvID=" + prov + " AND PlaFood_Name LIKE '%" + key + "%')";
}
else
{
field = " WHERE(PlaFood_Name LIKE '%" + key + "%')";
}
DataSet ds = new DataSet();
string sql = "SELECT f.*,a.AmpName,p.ProvName";
sql += " FROM (Amphur AS a INNER JOIN PlaceFood AS f ON a.AmpID = f.RefAmpID)";
sql += " INNER JOIN Province p ON(a.RefProvID = p.ProvID)";
sql += field;
dt = new OleDbDataAdapter(sql, conn);
dt.Fill(ds, "food");
Food[] foodList = null;
if (ds != null && ds.Tables.Count > 0)
{
DataTable myTable = ds.Tables[0];
foodList = new Food[ds.Tables[0].Rows.Count];
int i = 0;
foreach (DataRow myRow in myTable.Rows)
{
foodList[i] = new Food();
foodList[i].PlaFood_ID = myRow[myTable.Columns[0]].ToString();
foodList[i].PlaFood_Name = myRow[myTable.Columns[1]].ToString();
foodList[i].Ref_PlaFoodShopType_ID = myRow[myTable.Columns[2]].ToString();
foodList[i].PlaFood_Detail = myRow[myTable.Columns[3]].ToString();
foodList[i].PlaFood_Address = myRow[myTable.Columns[5]].ToString();
foodList[i].RefAmpID = myRow[myTable.Columns[6]].ToString();
foodList[i].PlaFood_Phone = myRow[myTable.Columns[8]].ToString();
foodList[i].PlaFood_Website = myRow[myTable.Columns[9]].ToString();
foodList[i].AmpName = myRow[myTable.Columns[10]].ToString();
foodList[i].ProvName = myRow[myTable.Columns[11]].ToString();
i++;
}
}
return foodList;
}
}
}
This post has been edited by Light: 18 August 2009 - 09:24 PM

Help










