When I created a grid, I tried to use a .ashx file as a datasource. No data displayed in IE.
But when I save the .ashx result as a .json file and bind to the datasource. Grid displyed ok.
Please help to find what is wrong with my code? Thank.
internet-users.json :
[{"Name":"System","Role":"a","Birthdate":"\/Date(259074000000)\/","ID":3},{"Name":"Moataieh","Role":"CHASSIS INSTALLATION","Birthdate":"\/Date(259074000000)\/","ID":26}]
My JsonDataSrc.ashx is:
I ran it in IE and IE displayed the same data as in internet-users.json
My index.html is:
But when I save the .ashx result as a .json file and bind to the datasource. Grid displyed ok.
Please help to find what is wrong with my code? Thank.
internet-users.json :
[{"Name":"System","Role":"a","Birthdate":"\/Date(259074000000)\/","ID":3},{"Name":"Moataieh","Role":"CHASSIS INSTALLATION","Birthdate":"\/Date(259074000000)\/","ID":26}]
My JsonDataSrc.ashx is:
I ran it in IE and IE displayed the same data as in internet-users.json
<%@ WebHandler Language=
"C#"
Class=
"GetData"
%>
using
System;
using
System.Web;
using
System.Data.SqlClient;
using
System.Data;
using
System.Collections.Generic;
using
System.Web.Script.Serialization;
public
class
GetData : IHttpHandler
{
public
void
ProcessRequest(HttpContext context)
{
string
connectionString = @
"Data Source=.;Initial Catalog=MyData;User ID=MyData;Password=;"
;
context.Response.ContentType =
"text/plain"
;
List<Person> list =
new
List<Person>();
using
(SqlDataReader sdr = StockIMS.IDataAccessLayer.SqlHelper.ExecuteReader(connectionString, CommandType.Text,
"SELECT top 2 isnull(Name,''), isnull([Job Role],'N/A') role, isnull(Birthday,'1972-01-01'), [Person ID] id FROM [Staff Names]"
))
{
while
(sdr.Read())
{
Person Personitem =
new
Person();
Personitem.Name=sdr[0].ToString();
Personitem.Role=sdr[1].ToString();
try
{
Personitem.Birthdate = Convert.ToDateTime(sdr[2].ToString());
}
catch
{ }
Personitem.ID =Convert.ToInt32( sdr[3].ToString());
list.Add(Personitem);
}
sdr.Close();
}
context.Response.Write(
new
JavaScriptSerializer().Serialize(list).ToString());
//转为Json格式
}
public
bool
IsReusable
{
get
{
return
false
;
}
}
}
public
class
Person
{
private
System.String _Name;
private
System.DateTime _Birthdate;
private
System.Int32 _ID;
private
System.String _Role;
public
Person()
{
}
public
string
Name {
get
{
return
_Name; }
set
{ _Name = value; } }
public
string
Role {
get
{
return
_Role; }
set
{ _Role = value; } }
public
DateTime Birthdate {
get
{
return
_Birthdate; }
set
{ _Birthdate = value; } }
public
Int32 ID {
get
{
return
_ID; }
set
{ _ID = value; } }
}
My index.html is:
<!DOCTYPE html>
<
html
>
<
head
>
<
title
>Basic usage</
title
>
<
link
href
=
"../content/shared/styles/examples-offline.css"
rel
=
"stylesheet"
>
<
link
href
=
"../styles/kendo.common.min.css"
rel
=
"stylesheet"
>
<
link
href
=
"../styles/kendo.default.min.css"
rel
=
"stylesheet"
>
<
script
src
=
"../js/jquery.min.js"
></
script
>
<
script
src
=
"../js/kendo.web.min.js"
></
script
>
<
script
src
=
"../content/shared/js/console.js"
></
script
>
<
script
src
=
"../content/shared/js/people.js"
></
script
>
<
style
>
body { font-size: 9pt; }
#dvGrid { width: 500px; }
span.hi-lite { color: red; }
#dvGrid th.k-header { text-align: center }
</
style
>
</
head
>
<
body
>
<
a
class
=
"offline-button"
href
=
"index.html"
>Back</
a
>
<
div
id
=
"example"
class
=
"k-content"
>
<
div
id
=
"clientsDb"
>
<
div
id
=
"dvgrid"
style
=
"height: 380px"
></
div
>
</
div
>
<
script
>
$(document).ready(function() {
var dataSrc = new kendo.data.DataSource(
{
transport:
{
read: {
type:"POST",
url: "internet-users.json",// "JsonDataSrc.ashx",
dataType: "json"
}
},
pageSize: 10,
serverPaging: true,
serverSorting: true
});
var dateRegExp = /^\/Date\((.*?)\)\/$/;
window.toDate = function (value)
{
var date = dateRegExp.exec(value);
return new Date(parseInt(date[1]));
}
function createGrid() {
$("#dvgrid").kendoGrid
({
dataSource: dataSrc,
autoBind: false,
sortable: {
allowUnsort: false
},
columns: [ {
field: "Name",
width: 90,
title: "Name"
} ,{
width: 100,
field: "Role"
} , {
field: "Birthdate",
title: "Birth Date",
template: '#= kendo.toString(toDate(Birthdate), "yyyy/MM/dd")#'
} , {
width: 50,
field: "ID"
}
]
}) ;
}
createGrid() ;
dataSrc.read();
});
</
script
>
</
div
>
</
body
>
</
html
>