0

I am working with Extjs 4.1 and asp.net I am trying to fill grid panel from database but getting error. I am using webservice to fetch data.

Error:

System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: Cannot serialize the DataTable. DataTable name is not set.
   at System.Data.DataTable.WriteXmlSchema(XmlWriter writer, Boolean writeHierarchy)
   at System.Data.DataTable.System.Xml.Serialization.IXmlSerializable.WriteXml(XmlWriter writer)
   at System.Xml.Serialization.XmlSerializationWriter.WriteSerializable(IXmlSerializable serializable, String name, String ns, Boolean isNullable, Boolean wrapped)
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write2_DataTable(Object o)
   at Microsoft.Xml.Serialization.GeneratedAssembly.DataTableSerializer.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
   at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   --- End of inner exception stack trace ---
   at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   at System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o, XmlSerializerNamespaces namespaces)
   at System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o)
   at System.Web.Services.Protocols.XmlReturnWriter.Write(HttpResponse response, Stream outputStream, Object returnValue)
   at System.Web.Services.Protocols.HttpServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)
   at System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)
   at System.Web.Services.Protocols.WebServiceHandler.Invoke()

my webservice code

 [WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json,UseHttpGet = true, XmlSerializeString = false)]
    public DataTable displayData() {
        db obj = new db();
        return obj.getCountry();
    }

calling web service from js file

 var store = Ext.create('Ext.data.Store', {
            pageSize: 20,
            model: 'ForumThread',
            autoLoad: true,
            proxy: {
                type: 'ajax',
                url: 'report.asmx/displayData',
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                 //url: '/grid.json',
                reader: {    
                root: 'data'   ,          
                    type: 'json',
                    method: "GET",
                    totalProperty: 'totalCount'
                }
            }
        });

even i remove this line from webservice [ScriptMethod(ResponseFormat = ResponseFormat.Json,UseHttpGet = true, XmlSerializeString = false)] but still same error.

I didnt use XMLSerializer in my code then also it will give me error like There was an error generating the XML document.

Smily
  • 2,646
  • 4
  • 23
  • 31

1 Answers1

2

You need to supply the datatable with a name, as the error suggests.

dt.TableName = "myTable";

sphair
  • 1,674
  • 15
  • 29
  • as you say me I gave table name but now I am getting error like `Ext.Error: Unable to parse the JSON returned by the server: You're trying to decode an invalid JSON String: ` – Smily Oct 19 '12 at 10:14
  • Seems your service responds with XML instead of JSON. See this post for a similar case: http://stackoverflow.com/questions/5611134/responseformat-json-returns-xml – sphair Oct 23 '12 at 08:34