ASP.NET MVC使用EasyUI的datagrid多选提交保存教程

时间:2022-09-25 20:53:47

需要实现EasyUI的datagrid组件加入选择checkbox列,并提交后台批量添加的功能,页面代码如下: 

复制代码代码如下:


<script language="javascript" type="text/javascript"> 
$(function() { 
//searchbox 
$('#selectgoods-keywords').searchbox({ 
searcher: function(val, name) { 
searchInfo(val); 

}); 
//datagrid 
$('#selectgoods-grid').datagrid({ 
url: '/Goods/List', 
pageNumber: 1, 
pageSize: 20, 
pageList: [20, 40, 60, 80, 100] 
}); 
//form 
}); 
function searchInfo(val){ 
// var keytype=$('#keyType').combobox('getValue'); 
var keytype = 'Goods_Name'; 
var keywords = val; 
$('#selectgoods-grid').datagrid('reload', { keytype: keytype, keywords: keywords }); 

function saveSelectGoods() { 
var ids = []; 
var rows = $('#selectgoods-grid').datagrid('getSelections'); 
for (var i = 0; i < rows.length; i++) { 
ids.push(rows[i].Identifier); 

var selectsupplier = '<%=ViewData["supplier"] %>'; 
$.post('/SupplierGoods/SaveSelect', { supplier: selectsupplier, checks: ids.join(',') }, function(data) { 
if (data) { 
$('#goodslist-grid').datagrid('reload'); 
$('#goodsInfo-window').window('close'); 
} else { 
alert('保存失败!'); 

}, 'json'); 

</script> 
<div style="width:100%; height:100%"> 
<table id="selectgoods-grid" class="easyui-datagrid" fit="true" toolbar="#tlb_selectgoods_search" pagination="true" 
rownumbers="true" fitColumns="true" idField="Identifier"> 
<thead> 
<tr> 
<th field="ck" checkbox="true"></th> 
<th field="Identifier" hidden="true" width="0" editor="text">Id</th> 
<th field="Goods_Name" width="100" editor="{type:'validatebox',options:{required:true}}">商品名称</th> 
<th field="Chemistry" width="100" editor="{type:'validatebox',options:{required:true}}">化学指标</th> 
<th field="Physical" width="100" editor="{type:'validatebox',options:{required:true}}">物理指标</th> 
<th field="Partner_Name" width="50" editor="{type:'validatebox',options:{required:true}}">合作状态</th> 
</tr> 
</thead> 
</table> 
<div id="tlb_selectgoods_search"> 
商品名称:<input name="keywords" id="selectgoods-keywords" class="easyui-searchbox" /><a href="#" class="easyui-linkbutton" iconCls="icon-save" plain="true" onclick="javascript:saveSelectGoods()">保存</a> 
</div> 
</div> 


ASP.NET MVC的Controller代码如下: 

复制代码代码如下:


/// <summary> 
/// 多选商品添加 
/// </summary> 
/// <param name="supplier">供货商ID</param> 
/// <returns></returns> 
public ActionResult SelectGoods(string supplier) 

ViewData["supplier"] = supplier; 
return View(); 

/// <summary> 
/// 保存批量添加的产品信息 
/// </summary> 
/// <param name="checks">选中的商品ID</param> 
/// <param name="supplier">供货商名称</param> 
/// <returns></returns> 
public JsonResult SaveSelect(string checks, string supplier) 

JsonResult result = new JsonResult(); 
result.Data = false; 
try 

if (String.IsNullOrEmpty(supplier)) 
return result; 
SupplierGoods goods = new SupplierGoods(); 
goods.Identifier = 0; 
//拼装xml 
String ids=Communion.StringHelper.BuildXmlID(checks); 
goods.Goods_ID = -1;//标示批量插入 
goods.Note = ids; 
goods.Month_Output = Convert.ToDouble(String.IsNullOrEmpty(this.ReadFromRequest("Month_Output")) ? "0" : this.ReadFromRequest("Month_Output")); 
goods.Supplier_ID = Convert.ToInt32(supplier); 
goods.Create_Date = DateTime.Now; 
goods.Customers = this.ReadFromRequest("Customers"); 
goods.Equipment = this.ReadFromRequest("Equipment"); 
goods.Detail_Params = this.ReadFromRequest("Detail_Params"); 
goods.IsDefault = Convert.ToInt32(String.IsNullOrEmpty(this.ReadFromRequest("IsDefault")) ? "0" : this.ReadFromRequest("IsDefault")); 
Business business = new BusinessLogic(); 
int id = business.Save<SupplierGoods>(goods); 
if (goods.Identifier == 0) 

goods.Identifier = id; 

result.Data = true; 
return result; 

catch (Exception e) 

return result; 


存储过程利用xml变量对传入的xml类型的ID集合进行批量添加保存到数据库中,存储过程代码如下: 

复制代码代码如下:


ALTER PROCEDURE [dbo].[View_SupplierGoodsCreate] 
@Identifier int, 
@Supplier_ID int, 
@Goods_ID int, 
@isDefault int, 
@Create_Date datetime, 
@Month_Output float(8), 
@Goods_Name nvarchar(400)=NULL, 
@Physical nvarchar(400)=NULL, 
@Chemistry nvarchar(400)=NULL, 
@Customers nvarchar(400)=NULL, 
@Equipment nvarchar(400)=NULL, 
@Note nvarchar(MAX)=NULL, 
@Detail_Params nvarchar(400)=NULL 
AS 
IF @Goods_ID=-1 
BEGIN 
--批量插入商品 
DECLARE @xml xml 
SET @xml=@Note 
INSERT INTO Supplier_Goods(Supplier_ID,Goods_ID,Create_Date,Month_Output,Customers,Equipment,Note,isdefault,Detail_Params) 
SELECT @Supplier_ID,identifier,@Create_Date,0,null,null,null,0,null 
FROM Base_Goods 
WHERE 
Identifier in (Select 
T.ID.value('.', 'int') As ID 
From 
@xml.nodes('/XML/ID') as T(ID)) and Identifier not in (select goods_id from Supplier_Goods where Supplier_ID=@Supplier_ID) 
SET @Identifier=@Goods_ID 
END