ASP.NET MVC saves the tutorial using EasyUI's datagrid multiple option submission

  • 2020-05-16 06:45:33
  • OfStack

The datagrid component of EasyUI needs to be added to select checkbox column and submit the function of background batch addition. The page code is as follows:
 
<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(' Save failed! '); 
} 
}, '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}}"> Name of commodity </th> 
<th field="Chemistry" width="100" editor="{type:'validatebox',options:{required:true}}"> Chemical indicators </th> 
<th field="Physical" width="100" editor="{type:'validatebox',options:{required:true}}"> Physical indicators </th> 
<th field="Partner_Name" width="50" editor="{type:'validatebox',options:{required:true}}"> State cooperation </th> 
</tr> 
</thead> 
</table> 
<div id="tlb_selectgoods_search"> 
 Product name: <input name="keywords" id="selectgoods-keywords" class="easyui-searchbox" /><a href="#" class="easyui-linkbutton" iconCls="icon-save" plain="true" onclick="javascript:saveSelectGoods()"> save </a> 
</div> 
</div> 

The Controller code for ASP.NET MVC is as follows:
 
/// <summary> 
///  Select more items to add  
/// </summary> 
/// <param name="supplier"> The supplier ID</param> 
/// <returns></returns> 
public ActionResult SelectGoods(string supplier) 
{ 
ViewData["supplier"] = supplier; 
return View(); 
} 
/// <summary> 
///  Save the batch added product information  
/// </summary> 
/// <param name="checks"> Selected goods ID</param> 
/// <param name="supplier"> Supplier name </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; 
// assemble xml 
String ids=Communion.StringHelper.BuildXmlID(checks); 
goods.Goods_ID = -1;// Marked batch insert  
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; 
} 
} 

The stored procedure makes use of xml variable to batch add and save the incoming ID collection of xml type to the database. The stored procedure code is as follows:
 
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 
-- Bulk insert  
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 

Related articles: