AJAX :: Returning DataSet / Datatable From Webmethod To Javascript
Sep 16, 2010
I have a simple web method written in the code-behind (not a separate asmx) of a test aspx page.
All it does is return a DataTable(or DataSet) both are failing, gives a blank 500 error saying "There was an error processing the request"
If I switch the return variable type to String, it works fine
I think my issue has to do with the version of the System.Web.Extensions, is that the assembly that actually contains the JSON communication implementation?
I've read all kinds of tutorials about how it should be possible to return the DataTable to javascript and then read the properties with javascript syntax.
For some reason it isn't working for me.
My web extensions is imported through my web.config with the following version
I have a service that works great on my development box. It uses JQuery to hit my web service, and then the JSON results are sent back.
The web service is located on our basePage.cs. We didn't want to put out an external WebService for this. Our on beta box something different is happening.
The web page seems to be trying to call the web method correctly - the JSON data is being sent... but the server doesn't seem to know it's a webmethod. here's my service function (it's in our basepage.cs which inherits from Page).
I have created alot of stored procedures in my application that return the result of a query in a datatable object. I never use a dataset. Why would I ever use a dataset over simply returning the result of a query as a datatable object?
I'm returning one table. My understanding is that a DataSet can be made of more than one DataTable. I also understand that I can use either of these to return my one table.
Is it better to use the DataTable when I have one table to return instead of a DataSet? Is there any advantage of not using the DataSet in a situation like this? Is there a disadvantage to using the DataSet when only one table is being returned? Does this even matter?
I have jquery using ajax/json to grab an elements ID and then hits:
[System.Web.Services.WebMethod] public static string EditPage(string nodeID) { DataTable dt = new DataTable(); using (SqlConnection con = new SqlConnection(Global.conString)) using (SqlCommand cmd = new SqlCommand("contentPageGetDetail", con)) { cmd.Parameters.Add("@ID", SqlDbType.UniqueIdentifier).Value = Global.SafeSqlLiteral(nodeID, 1); cmd.CommandType = CommandType.StoredProcedure; cmd.ExecuteNonQuery(); using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { da.Fill(dt); } } if (dt.Count > 0) { string pageTitle = dt.Rows[0]["Title"].toString(); string contentID = dt.Rows[0]["ContentID"].toString(); return pageTitle, contentID, nodeID; } else { return "Failed"; } }
When it's time to return I want to grab all content returned from the stored procedure back to the jquery method in the success section and set a hiddenfield, dropdown value, and a title in a textfield. In the jQuery I tried using "pageTitle" but it came up undefined. What do I need to do jQuery side to grab whats being returned and populate fields in my Web Form before showing the form?
I know how to call a simple old fashion asmx webservice webthod that returns a single value as a function return result. But what if I want to return multiple output params? My current approach is to separate the params by a dividing character and parse them on teh client. Is there a better way.
Here's how I return a single function result. How do I return multiple output values?
Code: [ScriptService] public partial class Default2 : System.Web.UI.Page { [WebMethod] [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] public static string GetStudent()
[code]....
And this is my HTML.What I'm trying to do is populate the JQuery DataTable using the returned JSON Formated data of the WebMethod. But its not working,
I'm working with the MicrosoftAjax.js libraries to make my webservice calls via javascript, right now all my services are returning basic types, like string, int, bool. can i also have my services return things like DataSets, DataTables, or custom Classes that I have built to my javascript side?
I am using the following code to export a datset to excel sheet.
[Code]....
Problem is that its not raising file download and hence no export is taking place.The same code works fine in a normal method.But with the webmethod its not working.
I have read a lot of posts describing why it isn't good practice to return heavy objects like DataTable/DataSet to the client from WCF. However, there doesn't seem to be much discussion about the alternatives (or maybe I'm not looking in the right forums).
My problem is this: I've tried to convert my DataReader/DataTable into a List<List<string>>, where List<string> represents the data in each row, but get an error at the point when the data is being sent to the client. A simple List<T> or a one-dimensional array gets returned without any problems. But whenever I try to return a collection of collections, there seems to be an issue. I don't know until runtime what my DataReader would look like as different stored procs are called based on user selection from a web form.
What am I missing here. Is WCF not able to handle collection of collections (I know that multi-dimensional arrays are not supported)?
Would it be better in terms of payload, if I return a datatable as a List<DataRow> from a WCF method? I have WsHtppBinding for my WCF. I am expecting the datatable to contain 5,000 to 10,000 records.
Also, how can I test the difference in payload sizes when returning a DataTable Vs List<DataRow>?
I will get required data from the web method that returns as table!!!
[System.Web.Services.WebMethod] public static DataTable call(String code) { SqlConnection con = new SqlConnection(); SqlCommand cmd = new SqlCommand();
I'm fairly new to ASP.NET and am working through a tutorial that demonstrates the use of DataAdapter, DataTable, and DataRow classes. The tutorial focuses on binding returned DataTables to GridView objects - I'm having trouble understanding what to do to extract one row for display. I've found I can do the following:
A ProductsTable should be able to return its own ProductRows w/o resorting to a cast, no? Can't find how to do it otherwise. I'm thinking how to go about creating a form where the user will only ever be working on one record at a time. Wouldn't it make sense for the DAL to return a ProductsRow instead of a ProductsTable?
I am trying to use a datasource with a dropdownlist. Eventually, my data source method to call a stored procedure and load the datatable is returns, but for now, I am just creating the datatable manually. I need each item to have two attributes, the text, whixh the user will see in the DDL, and the value that the program will retrieve from and store back to the file.
It is partly working in that the DDL has 3 items, however the text for each item reads "System.Data.DataRowView"
I have to be close, but I can't figure out what I am doing wrong.
If I need to fetch one whole column from Table1 in the DB, should I fetch it using datatable or dataset? I can do both ways. I mean ok I should use Datatable. Why is that? What would happen if I use Dataset? ok that's what I wanted to know. So there's memory issue. I mean whatever I use be it Datatable or Dataset, both will be fetching only ONE column frommy table in DB. How is Dateset's gonna use more memory then?
i have one question for my project. i am fetching all users data in one dataset, but each user will be in unique datatable to avoid no. of database connection i will fetch data in one single transaction no. of user are more than 10000 ..is it practical to store more than 10000 tables in one single dataset what will be then performance issue for the same, it will be the diffrent application for my project to generate this much of data. how many no. of table one dataset can contain in visual studio 2008 with 3.5 framework?