我目前正在使用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,Page.ToString(),out howManyPages,"FALSE","CostPrice","asc",destinationList);
然后,我将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") };
然后,匿名类型从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>
一切都很好.
但是,我想扩展代码以执行一些评估检查(例如,检查DataTable中的各个列不是NULL)和其他预处理(例如,调用各种函数来构建基于图像ID的图像URL – 在将DataTable的结果行作为匿名类型返回给客户端之前,这是DataTable中未显示在代码片段中的另一列.
基本上,我想迭代DataTable,执行评估检查和预处理,同时手动构建我的匿名类型.或者也许有更好的方法来实现这一目标?
无论如何我能做到这一点吗?
亲切的问候
沃尔特
解决方法
我认为检查空值可能是在服务器端有意义的.道格拉斯描述的方法是可行的方法.另一个是在构建匿名类型集合时处理null问题:
var Feeds = from Feed in categoryProducts.AsEnumerable() select new { Description = Feed.Field<string>("description"),// Return 0 if the inventory value is null. Inventory = (int?)Feed.Field("Inventory") ?? 0 };
如上所示,ScottGu在using the null coalescing operator to handle nulls concisely上发表了一篇好文章.
至于构建链接,这可能是我建议在客户端模板中做的事情.您可以通过这种方式消除以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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。