私はjTemplatesの正しいフォーマットを構築する際に問題があります。いくつかの助けが必要です。 これは私が持っているものです:WebMethodを持つASP.NETページ。このWebMethodはjQueryにデータを返します。データはjTemplateによって処理されるはずですが、jTemplateの形式が不明です。jQueryとjTemplates - 適切な値を取得する方法は?
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Data.Common;
using System.Web.Services;
using System.Linq;
using System.Web.Script.Services;
public partial class jpaging : System.Web.UI.Page
{
[WebMethod]
public static IEnumerable PagingData(int Page, int PageSize)
{
// talk to database and return datatable
Database db = DatabaseFactory.CreateDatabase();
using (DbCommand cmd = db.GetStoredProcCommand("Paging"))
{
db.AddParameter(cmd, "@Page", DbType.Int32, 4, ParameterDirection.Input, true, 10, 0, null, DataRowVersion.Default, Page);
db.AddParameter(cmd, "@PageSize", DbType.Int32, 4, ParameterDirection.Input, true, 10, 0, null, DataRowVersion.Default, PageSize);
using (DataTable dt = (db.ExecuteDataSet(cmd)).Tables[0])
{
var t = from data in dt.AsEnumerable() select data.ItemArray;
return t;
}
}
}
}
"return t"から返されるデータは、次の形式です。
{"d":[
[1,1,"First 1","Last 1",301],
[2,2,"First 2","Last 2",301],
[3,3,"First 3","Last 3",301],
[4,4,"First 4","Last 4",301],
[5,5,"First 5","Last 5",301],
[6,6,"First 6","Last 6",301],
[7,7,"First 7","Last 7",301],
[8,8,"First 8","Last 8",301],
[9,9,"First 9","Last 9",301],
[10,10,"First 10","Last 10",301]
]}
私はjTemplatesにデータを解析するために、次のコードを使用しています:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="jpaging.aspx.cs" Inherits="jpaging" EnableViewState="false" %>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script src="paging/jquery-jtemplates.js" type="text/javascript"></script>
<script type="text/javascript">
var currentPage = 1;
var pageSize = 10;
$(document).ready(function() {
loadData(1);
});
function loadData(page) {
currentPage = page;
$.ajax({
type: "POST",
url: "jpaging.aspx/PagingData",
data: "{'Page':'" + page + "', 'PageSize':'" + pageSize + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
doTemplating(msg);
// ....
}
});
}
function doTemplating(msg) {
$('#cont').setTemplateURL('/mytemplate.htm', null, { filter_data: false });
$('#cont').processTemplate(msg);
}
</script>
</head>
<body>
<table id="rsstable" cellspacing="0">
<thead>
<tr><th>ID</th><th>First</th><th>Last</th></tr>
</thead>
<tbody id="cont"></tbody>
</table>
</body>
</html>
私はmytemplate.htmどのように構築するかわからない午前:
{#foreach $T.d as post}
<tr>
<td> <-- what to write here for column1? --> </td>
<td> <-- what to write here for column2? --> </td>
<td> <-- what to write here for column3? --> </td>
</tr>
{#/for}
私は何かを試してみました{$ T.post [0]}のように動作しません。私はWebMethod属性からこのような何かを返す回避したい側の注意点として
:
var feeds = from feed in dt.AsEnumerable()
select new
{
EmployeeID = feed["EmployeeID"],
FirstName = feed["FirstName"],
LastName = feed["LastName"],
Total = feed["TotalRows"]
};
return feeds;
それが事実だった場合、私はちょうどこのようなものだろう:
{#foreach $T.d as post}
<tr>
<td>{$T.post.EmployeeID}</td>
<td>{$T.post.FirstName}</td>
<td>{$T.post.LastName}</td>
</tr>
{#/for}
を。 ..しかし私はこれを避けるために、テンプレートをより汎用的にする/他の返されたデータに使用できるようにしたい。
提案がありますか? :-)
戻ってくれてありがとうございます。間違った用語(JSONP)を使用しています。 基本的には、戻り値の変数 'return t 'から返されたデータをループすることです。返されるデータがわかっているので(上記のように)、firebugを使ってデバッグする必要はありません。 基本的には、ループ内の列名を参照するのではなく、jTemplateまたはjquery.tmplを使用して項目/値のプロパティを参照できますか? – Sha
少なくともjquery.tmplでは可能です。おそらくjTemplateでもですか?私がやったのは、セットアップテンプレートです。テンプレートの各部分が動作していることを確認するために、小さな部分に表示するようにしました。つまり、各行の文字列バージョンを印刷するようにしてください。次に、各セルを印刷するようにしてください。テンプレートは苦痛であり、しばらく時間がかかります。それはあなたが行くように確認小さなビットで、それを取るのが最善です。 – Dessus