jsData 使用教程(三) 实现增删改功能
2010-06-27 19:55 麦舒 阅读(1706) 评论(0) 编辑 收藏 举报在某些 RIA 框架中,实现增删改,可能要写一大堆的服务端代码,但是在 jsData 里,只需要写极少量的代码。如果能利用上代码生成器,甚至可以不写代码。现在我们来看一个比较典型的例子。
服务端代码如下:

[WebMethod]
public virtual ExecuteResult UpdateCategory(Dictionary<string, object> item)
{
return base.Update<Category>(item);
}
[WebMethod]
public virtual ExecuteResult DeleteCategory(Dictionary<string, object> item)
{
return base.Delete<Category>(item);
}
[WebMethod]
public virtual ExecuteResult InsertCategory(Dictionary<string, object> item)
{
var result = base.Insert<Category>(item);
if(result.AffectedRowCount > 0)
{
result.Members = new {
CategoryID = item["CategoryID"]
};
}
return result;
}
public virtual ExecuteResult UpdateCategory(Dictionary<string, object> item)
{
return base.Update<Category>(item);
}
[WebMethod]
public virtual ExecuteResult DeleteCategory(Dictionary<string, object> item)
{
return base.Delete<Category>(item);
}
[WebMethod]
public virtual ExecuteResult InsertCategory(Dictionary<string, object> item)
{
var result = base.Insert<Category>(item);
if(result.AffectedRowCount > 0)
{
result.Members = new {
CategoryID = item["CategoryID"]
};
}
return result;
}
由于 CategorID 是自增长类型,它的数值是在插入数据库后生成的。因此在插入数据后,需要将该数值返回到客户端。下面这段代码就是用于将服务端生成的属性返回到客户端,而 result.AffectedRowCount > 0 则表示成功将数据添加到数据库。
if(result.AffectedRowCount > 0)
{
result.Members = new {
CategoryID = item["CategoryID"]
};
}
{
result.Members = new {
CategoryID = item["CategoryID"]
};
}
客户端代码如下,只需要添加一个 CommandField 即可实现增、删、改功能 ,具体请看文件名为 Cagegory.html 的例子。

Sys.onReady(function() {
var c = new WebApplication.CategoryMetaType();
var dataSource = new JData.WebServiceDataSource("../Services/NorthwindService.asmx", "GetCategories", "InsertCategory", "UpdateCategory", "DeleteCategory");
dataSource.set_selector([c.CategoryID, c.CategoryName, c.Description]);
dataSource.set_sorting('CategoryID desc');
var columns = new Array();
columns[columns.length] = new JData.BoundField(c.CategoryID, null, '60px', '56px', true);
columns[columns.length] = new JData.BoundField(c.CategoryName, null, '120px', '112px', false);
columns[columns.length] = new JData.BoundField(c.Description, null, '220px');
columns[columns.length] = new JData.CommandField('', '120px', true, true, true, true);
var gridView = new JData.GridView($get('gridView'));
gridView.set_dataSource(dataSource);
gridView.set_columns(columns);
gridView.set_allowPaging(true);
gridView.set_caption('Cagegoires');
gridView.set_pageSize(15);
gridView.get_pagerSettings().set_mode(JData.PagerButtons.NumericFirstLast);
JData.JQueryUIStyle(gridView);
gridView.initialize();
});
var c = new WebApplication.CategoryMetaType();
var dataSource = new JData.WebServiceDataSource("../Services/NorthwindService.asmx", "GetCategories", "InsertCategory", "UpdateCategory", "DeleteCategory");
dataSource.set_selector([c.CategoryID, c.CategoryName, c.Description]);
dataSource.set_sorting('CategoryID desc');
var columns = new Array();
columns[columns.length] = new JData.BoundField(c.CategoryID, null, '60px', '56px', true);
columns[columns.length] = new JData.BoundField(c.CategoryName, null, '120px', '112px', false);
columns[columns.length] = new JData.BoundField(c.Description, null, '220px');
columns[columns.length] = new JData.CommandField('', '120px', true, true, true, true);
var gridView = new JData.GridView($get('gridView'));
gridView.set_dataSource(dataSource);
gridView.set_columns(columns);
gridView.set_allowPaging(true);
gridView.set_caption('Cagegoires');
gridView.set_pageSize(15);
gridView.get_pagerSettings().set_mode(JData.PagerButtons.NumericFirstLast);
JData.JQueryUIStyle(gridView);
gridView.initialize();
});
Demo 下载:http://www.jsdata.org ,完整代码在 /Demo/Category.html 中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述