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

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

[js]

<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>

[/js]

ASP.NET MVC的Controller代码如下:

[csharp]

        /// <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;

            }           

        }

[/csharp]

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

[sql]

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

[/sql]

原文地址:www.mikel.cn

posted @ 2011-12-05 14:33  mikel  阅读(1856)  评论(0编辑  收藏  举报