Wal*_*art 6 c# asp.net anonymous-types
我目前正在使用ASP.NET,jQuery和JSON实现客户端分页解决方案.
我一直在关注来自encosia的优秀文章:http://encosia.com/2008/08/20/easily-build-powerful-client-side-ajax-paging-using-jquery/
在我的Web方法中,我将数据从数据库中检索为DataTable:
DataTable categoryProducts = ProductViewerAccess.GetCategoryProducts
("AA", 4, 0, Page.ToString(), out howManyPages, "FALSE", 0, "CostPrice", "asc", destinationList);
Run Code Online (Sandbox Code Playgroud)
然后,我将DataTable中的数据检索为匿名类型:
var feeds =
from feed in categoryProducts.AsEnumerable()
select new
{
Description = feed.Field<string>("description"),
MfPartNo = feed.Field<string>("MfPN"),
Inventory = feed.Field<Int32>("Inventory")
};
Run Code Online (Sandbox Code Playgroud)
然后,匿名类型从Web方法返回到客户端:
return feeds.Take(PageSize);
然后,模板将提取并显示字段:
<tbody>
{#foreach $T.d as post}
<tr>
<td>
{$T.post.Description}
<p>Mfr#: {$T.post.MfPartNo}</p>
</td>
<td>{$T.post.Inventory}</td>
</tr>
{#/for}
</tbody>
Run Code Online (Sandbox Code Playgroud)
一切都很好.
但是,我想扩展代码以执行一些评估检查(例如,检查DataTable中的各个列不是NULL)和其他预处理(例如,调用各种函数来构建基于图像ID的图像URL - 在将DataTable的结果行作为匿名类型返回给客户端之前,这是DataTable中未显示在代码片段中的另一列.
基本上,我想迭代DataTable,执行评估检查和预处理,同时手动构建我的匿名类型.或者也许有更好的方法来实现这一目标?
无论如何我能做到这一点吗?
亲切的问候
沃尔特
我认为检查空值可能在服务器端是有意义的。道格拉斯描述的方法是一种可行的方法。另一种方法是在构建匿名类型集合时处理 null 问题:
var feeds =
from feed in categoryProducts.AsEnumerable()
select new
{
Description = feed.Field<string>("description"),
MfPartNo = feed.Field<string>("MfPN"),
// Return 0 if the inventory value is null.
Inventory = (int?)feed.Field("Inventory") ?? 0
};
Run Code Online (Sandbox Code Playgroud)
ScottGu 有一篇关于使用空合并运算符来简洁地处理空值的好文章,如上所示。
至于构建链接,我可能建议在客户端模板中执行此操作。您可以通过这种方式消除在 JSON 中发送的大量冗余数据。像这样的事情,例如:
<tbody>
{#foreach $T.d as post}
<tr>
<td>
<a href="/url/to/details.aspx?id={$T.post.ID}">{$T.post.Description}</a>
<p>Mfr#: {$T.post.MfPartNo}</p>
</td>
<td>{$T.post.Inventory}</td>
</tr>
{#/for}
</tbody>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1685 次 |
| 最近记录: |