【发布时间】:2016-11-06 22:59:59
【问题描述】:
我正在使用带有处理选项的服务器端的 Jquery Datatable 1.10.12。我尝试了他们网站JQuery Data table server side 上的代码,但没有运气。我做错了哪个页面没有显示记录并给出错误 500 任何帮助都会很棒。
我的代码:
.aspxpage
<script>
$(document).ready(function () {
$('#example').DataTable({
serverSide: true,
ajax: 'EmployeeService.asmx/GetPersons'
});
});
</script>
<body>
<table id="example" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>BusinessEntityID</th>
<th>FirstName</th>
<th>MiddleName</th>
<th>LastName</th>
<th>PersonType</th>
</tr>
</thead>
</table>
</body>
asmx:
[WebMethod]
public void GetPersons(int iDisplayLength, int iDisplayStart, int iSortCol_0, string sSortDir_0, string sSearch )
{
int displayLength = iDisplayLength;
int displayStart = iDisplayStart;
int sortCol = iSortCol_0;
string sortDir = sSortDir_0;
string search = sSearch;
List<Person> pdetails = new List<Person>();
int filteredcount = 0;
using (SqlConnection con = new SqlConnection("Data Source=xxx;Initial Catalog=AdventureWorks;Integrated Security=True"))
{
SqlCommand cmd = new SqlCommand(("spGetPersons"), con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter pDisplayLength = new SqlParameter()
{
ParameterName = "@DisplayLength",
Value = displayLength
};
cmd.Parameters.Add(pDisplayLength);
SqlParameter pDisplayStart = new SqlParameter()
{
ParameterName = "@DisplayStart",
Value = displayStart
};
cmd.Parameters.Add(pDisplayStart);
SqlParameter pSortCol = new SqlParameter()
{
ParameterName = "@SortCol",
Value = sortCol
};
cmd.Parameters.Add(pSortCol);
SqlParameter pSortDir = new SqlParameter()
{
ParameterName = "@SortDir",
Value = sortDir
};
cmd.Parameters.Add(pSortDir);
SqlParameter pSearchString = new SqlParameter()
{
ParameterName = "@Search",
Value = string.IsNullOrEmpty(search)?null:search
};
cmd.Parameters.Add(pSearchString);
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Person per = new Person();
per.BusinessEntityID = rdr["BusinessEntityID"].ToString();
filteredcount = Convert.ToInt32(rdr["TotalCount"].ToString());
per.FirstName = rdr["FirstName"].ToString();
per.MiddleName = rdr["MiddleName"].ToString();
per.LastName = rdr["LastName"].ToString();
per.PersonType = rdr["PersonType"].ToString();
pdetails.Add(per);
}
}
var result = new
{
draw = 1,
recordsTotal = GetPersonsTotalCount(),
recordsFiltered = filteredcount,
data = pdetails
};
JavaScriptSerializer js = new JavaScriptSerializer();
js.MaxJsonLength = 2147483644;
Context.Response.Write(js.Serialize(result));
}
private int GetPersonsTotalCount()
{
int totalPersonCount = 0;
using (SqlConnection con = new SqlConnection("Data Source=xxx;Initial Catalog=AdventureWorks;Integrated Security=True"))
{
SqlCommand cmd = new SqlCommand(("select count(*) from Person.Person"), con);
con.Open();
totalPersonCount = (int)cmd.ExecuteScalar();
}
return totalPersonCount;
}
public class Person
{
public string BusinessEntityID { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public string PersonType { get; set; }
}
JSON :
{"draw":1,"recordsTotal":19972,"recordsFiltered":19972,"data":[{"BusinessEntityID":"1","FirstName":"Ken","MiddleName":"J","LastName":"Sánchez","PersonType":"EM"},{"BusinessEntityID":"2","FirstName":"Terri","MiddleName":"Lee","LastName":"Duffy","PersonType":"EM"},{"BusinessEntityID":"3","FirstName":"Roberto","MiddleName":"","LastName":"Tamburello","PersonType":"EM"},{"BusinessEntityID":"4","FirstName":"Rob","MiddleName":"","LastName":"Walters","PersonType":"EM"},{"BusinessEntityID":"5","FirstName":"Gail","MiddleName":"A","LastName":"Erickson","PersonType":"EM"},{"BusinessEntityID":"6","FirstName":"Jossef","MiddleName":"H","LastName":"Goldberg","PersonType":"EM"},{"BusinessEntityID":"7","FirstName":"Dylan","MiddleName":"A","LastName":"Miller","PersonType":"EM"},{"BusinessEntityID":"8","FirstName":"Diane","MiddleName":"L","LastName":"Margheim","PersonType":"EM"},{"BusinessEntityID":"9","FirstName":"Gigi","MiddleName":"N","LastName":"Matthew","PersonType":"EM"},{"BusinessEntityID":"10","FirstName":"Michael","MiddleName":"","LastName":"Raheem","PersonType":"EM"}]}
错误:
http://localhost:64400/EmployeeService.asmx/GetPersons?draw=1&columns%5B0%5…art=0&length=10&search%5Bvalue%5D=&search%5Bregex%5D=false&_=1478471333896 加载资源失败:服务器响应状态为 500 (内部服务器错误)“/”应用程序中的服务器错误。
请求格式无法识别,因为 URL 意外以 '/GetPersons'。
描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。
异常详细信息:System.InvalidOperationException:请求格式为 无法识别以“/GetPersons”结尾的 URL。
来源错误:
在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
堆栈跟踪:
[InvalidOperationException:无法识别 URL 的请求格式 意外以“/GetPersons”结尾。]
System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(类型 类型、HttpContext 上下文、HttpRequest 请求、HttpResponse 响应) +169669 System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext 上下文、字符串动词、字符串 url、字符串文件路径)+209
System.Web.Script.Services.ScriptHandlerFactory.GetHandler(HttpContext 上下文,字符串 requestType,字符串 url,字符串路径翻译)+120
System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +339 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
【问题讨论】:
标签: c# asp.net webforms datatables