[WebMethod(Description = "Returns a dataset according to desired id")] public DataSet GetDeptById(short id) { // create dataset (ds), datatable (dt) and table adapter (adapter) dsDept ds = new dsDept(); dsDept.DepartmentDataTable dt = new dsDept.DepartmentDataTable(ds.Tables[0]); dsDeptTableAdapters.DepartmentTableAdapter adapter = new dsDeptTableAdapters.DepartmentTableAdapter(); // call adapter method to fill datatable according to requested id adapter.FillByID(dt, id); return ds; }The problem is that you're filling a DataTable that is not actually part of the new DataSet you just instantiated.
[WebMethod(Description = "Returns a dataset according to desired id")] public DataSet GetDeptById(short id) { // create dataset (ds), datatable (dt) and table adapter (adapter) dsDept ds = new dsDept(); dsDeptTableAdapters.DepartmentTableAdapter adapter = new dsDeptTableAdapters.DepartmentTableAdapter(); // call adapter method to fill datatable according to requested id adapter.FillByID(ds.DepartmentDataTable, id); return ds; }Also I think I should mention that it's generally not a good idea to return DataSets from Web Service methods ... unless your Web Service is never intended to be used by other than .NET clients. Returning a DataSet instead of an XML string is not very cross-platform-friendly. But, that's another topic. <g>
Select * From HumanResources.Department where DepartmentID = @id.
// Web Service > >using System; >using System.Data; >using System.Web; >using System.Collections; >using System.Web.Services; >using System.Web.Services.Protocols; >using System.ComponentModel; > >namespace wsAwDept >{ > /// <summary> > /// Summary description for svcAwDept > /// </summary> > [WebService(Namespace = "http://catsnjazz/")] > [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] > [ToolboxItem(false)] > public class svcAwDept : System.Web.Services.WebService > { > > [WebMethod(Description = "Returns a dataset according to desired id")] > public DataSet GetDeptById(short id) > { > // create dataset (ds), datatable (dt) and table adapter (adapter) > dsDept ds = new dsDept(); > dsDept.DepartmentDataTable dt = new dsDept.DepartmentDataTable(ds.Tables[0]); > dsDeptTableAdapters.DepartmentTableAdapter adapter = > new dsDeptTableAdapters.DepartmentTableAdapter(); > > // call adapter method to fill datatable according to requested id > adapter.FillByID(dt, id); > > return ds; > } > } >} >>
// Calling program > >using System; >using System.Collections.Generic; >using System.ComponentModel; >using System.Data; >using System.Drawing; >using System.Text; >using System.Windows.Forms; > >namespace awdatatest >{ > public partial class Form1 : Form > { > // create service, dataset and datatablereader > catsnjazz.svcAwDept ws = new catsnjazz.svcAwDept(); > DataSet departmentDS = new DataSet(); > DataTableReader dr; > > public Form1() > { > InitializeComponent(); > } > > private void btnStart_Click(object sender, EventArgs e) > { > // create a dataset using service and id of 11 > departmentDS = ws.GetDeptById(11); > // set the datatablereader to the table in the dataset > dr = departmentDS.CreateDataReader(departmentDS.Tables[0]); > > // see if we have the right schema for the table > MessageBox.Show(dr.GetName(0) + "\r\n" + > dr.GetName(1) + "\r\n" + > dr.GetName(2) + "\r\n" + > dr.GetName(3)); > > if (dr.HasRows) > { > // move to 1st record and display the data > dr.Read(); > this.showData(dr); > } > else > { > // no data in the dataset - WHY NOT?? > MessageBox.Show("No rows returned"); > } > } > > // display the data in the dataset > private void showData(DataTableReader dr) > { > this.txtDepartmentID.Text = dr.GetValue(0).ToString(); > this.txtName.Text = dr.GetValue(1).ToString(); > this.txtGroupName.Text = dr.GetValue(2).ToString(); > this.txtModifiedDate.Text = dr.GetValue(3).ToString(); > } > } >} >