随笔-18  评论-40  文章-0  trackbacks-1
  2011年12月16日

最近项目中遇到datagrid数据需要再form加载完成后根据具体的商品显示页脚footer合计数量的问题,页面初始化的时候不加载datagrid数据,初始化完成后需要读取form中的项目值然后加载对应的数据到

datagrid中,问题代码如下:

$('#grid').datagrid({
   showFooter:true
});
$('#form').form({
  onLoadSuccess:function(data){
    //datagrid    
    $('#grid').datagrid({
       url:'/grid/getData?id='+$('#id').val()+'&r='+Math.random()
    });
 }
});

结 果datagrid不显示页脚footer,列数据能显示正常,分析问题原因是因为页面创建datagrid的时候因为没有数据导致错误,firefox 中提示rows未定义,当然未定义了,因为我根本没给datagrid赋值,这样datagrid的页脚就显示不出来,那么怎么修改呢,参考了我以前写的 文章[原创]EasyUI的DataGrid合击汇总页脚使用教程得到解决办法,那就初始化的时 候给datagrid一个空的数据集,让它顺利初始化完成,然后再当form加载成功后更换它的数据,代码如下:

var nullData='{"rows":[],"total":0;"footer":{"Footer":"合计","num":0}}';
var json=eval('(' + nullData + ')');
$('#grid').datagrid({
   data:json,
   showFooter:true
});
$('#form').form({
  onLoadSuccess:function(data){
    //datagrid    
    $('#grid').datagrid({
       url:'/grid/getData?id='+$('#id').val()+'&r='+Math.random()
    });
 }
});


posted @ 2011-12-16 13:26 mikel 阅读(219) 评论(0) 编辑
  2011年12月7日

最近涉及到treegrid组件的查询,需要根据查询条件动态更新EasyUI的treegrid组件的动态加载查询结果,搜遍了treegrid源码和文档发现treegrid是扩展自datagrid和tree的,不过以往利用datagrid的

reload方法加参数的方式加载查询结果数据,可是treegrid却只执行reload不能加载带参数的查询结果,可能是做了限制,如下代码不能加载查询结果:
[js]
<table id='treegrid' class='easyui-treegrid' url='/User/List'></table>

$('#treegrid').treegrid('reload',{'name':'mikel'});
[/js]
于是又去官方论坛搜索相关问题,发现一个有价值的帖子,茅塞顿开,为什么要指望treegrid组件来异步查询数据,为什么不先异步,然后在加载返回的json数据呢?代码如下:
[js]
function loadData()
{
$.post('/User/List',{name:'mikel'},function(data){
  $('#treegrid').treegrid('loadData',data);
},'json');
}
[/js]

posted @ 2011-12-07 09:47 mikel 阅读(283) 评论(0) 编辑
  2011年12月5日

需要实现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 阅读(286) 评论(0) 编辑
  2011年11月29日

最近做订单处理,需要汇总订单明细的数量和金额,所以涉及到使用EasyUI的Datagrid组件的页脚汇总功能,先看了一下官方教程,如下:

Tutorial » Displaying Summary Information in DataGrid's Footer

In this tutorial, we will show you how to display the summary rows in the footer of datagrid.

View Demo

To display footer row, you should set the showFooter property to true and then prepare the footer rows that is defined in datagrid data. Below is the sample data:

  1. {"total":1,"rows":[{"id":1,"name":"Chai","price":18.00}],"footer":[{"name":"Total","price":18.00}]}

Create DataGrid

  1. <tableid="tt"title="DataGrid"class="easyui-datagrid"style="width:400px;height:250px"
  2. url="data/datagrid17_data.json"
  3. fitColumns="true"rownumbers="true"showFooter="true">
  4. <thead>
  5. <tr>
  6. <thfield="name"width="80">Product Name</th>
  7. <thfield="price"width="40"align="right">Unit Price</th>
  8. </tr>
  9. </thead>
  10. </table>

The footer rows are same as body rows, so you can display more than one summary information on footer.

Download the EasyUI example:

easyui-datagrid-demo.zip
上面的教程不用多说,大家可以看一下,重点是再Json数据的格式问题上,需要加入footer的数组记住是数组,并且数组的列要和你datagrid中的列名一致,需要汇总的列有值,其他列可以不赋值
我的服务器端代码如下:
[csharp]
public Dictionary getOrderList(string ordercode)
{
Dictionary result=new Dictionary();
if (String.IsNullOrEmpty(ordercode))
{
result.Add("total",1);
result.Add("rows", new BuyOrderList());
result.Add("footer", new { Goods_Name = "合计", Buy_Number = 0, Order_Amount=0 });
return result;
}
else
{
List datas = new BusinessLogic().Select(new BuyOrderList() { Order_Code = ordercode });
result.Add("total", datas.Count);
result.Add("rows", datas);
List footer=new List();
footer.Add(new BuyOrderList(){Identifier=-2,Goods_Name="合计:",Buy_Number=datas.Sum(m =&gt; m.Buy_Number),Order_Amount=datas.Sum(m =&gt; m.Order_Amount)});
result.Add("footer",footer);
return result;
}
}
[/csharp]
posted @ 2011-11-29 15:16 mikel 阅读(225) 评论(0) 编辑
  2011年11月16日

原文地址:www.mikel.cn

最近需要实现对treeGrid的查询功能,具体查询界面如下:

可以查询根节点和具体子节点的信息,开始使用EasyUI的TreeGrid的loadData 加载url的方式不能实现查询功能,于是利用异步AJAX查询了一下数据返回后,赋值给变量,然后利用

TreeGrid的loadData加载这个json格式的返回结果实现了对TreeGrid的查询功能,代码如下:


    function searchROM() {

var product = $('#Product').combobox('getValue');
var keytype = $('#keytype').combobox('getValue');
var keywords = $('#keywords').val();
var url = encodeURI('/GoodsROM/ROMList?product=' + product + '&keytype=' + keytype + '&keywords=' + keywords+'&'+Math.random());
$.post(url, {}, function(data) {
var d = data;//返回json格式结果
$('#grid').treegrid('loadData',d);//加载数据更新treegrid
}, 'json');

}


posted @ 2011-11-16 10:27 mikel 阅读(239) 评论(2) 编辑
  2011年11月3日
摘要: 自定义ASP.NET MVC JsonResult序列化结果自定义ASP.NET MVC 控制器和JsonResult类最近项目中前台页面使用EasyUI的jQuery插件开发中遇到,EasyUI Form中的Datebox组件绑定ASP.NET MVC返回的DateTime类型的数据错误,因为ASP.NET MVC返回的DateTime类型的JsonResult的结果中的值是"\/Date(277630788015)\/",于是EasyUI显示的就是返回的值,没有将日期转换,直接显示在DateBox组件中,解决这个问题其实有两种办法:扩展EasyUI的datebox组件的阅读全文
posted @ 2011-11-03 10:27 mikel 阅读(347) 评论(0) 编辑
  2011年10月29日
摘要: 程序要求:jQuery EasyUI 插件:http://www.jeasyui.com/download/index.php具体内容:引用部分代码:<link rel="stylesheet" type="text/css" href="../themes/default/easyui.css"><link rel="stylesheet" type="text/css" href="../themes/icon.css"><link rel=阅读全文
posted @ 2011-10-29 16:48 mikel 阅读(741) 评论(5) 编辑
  2011年9月13日
摘要: 之前一直用ASP.NET MVC中Json(value)方法转换成JsonResult格式的数据异步返回给JQuery进行处理,很爽,结果最近不用ASP.NET MVC开发应用了,异步地区调用涉及到Json数据的获取发现居然没有好的Json格式数据转换方法像过去一样简单调用很是不爽,搜了下找到个利用System.Runtime.Serialization.Json转换数据的方法,可以转换为JQuery可以识别的格式,不过调用过程中发现它将实体类的属性名称转换成:”<属性名>k__BackingField ”这种格式,调用起来很不方便,不过还是将这种方法编写的助手类贴出来:注意需要引阅读全文
posted @ 2011-09-13 15:45 mikel 阅读(434) 评论(1) 编辑
  2011年7月8日
摘要: Delphi使用ReportMachine制作小计和总计报表最近在做一个Delphi的发货清单的打印程序,其中涉及到需要计算清单的小计和总计的功能,文字难以表达清楚,上图吧:报表第一页的小计计算当前页面的商品价格总和,总计目前和小计一样是计算截止到当前页面的所有商品的金额和,下图为最后一页:这下大家明白了吧,就是要实现这样的报表。废话不多说了,开始讲解我的思路:1.既然要计算小计,就是每页的金额和了,加入ReportMachine的计算文本框(TRMCalcMemoView),然后设置要汇总的字段值为数据字段“factSum”,然后选择计算文本框的属性面板中的“CalcOptions”选中“统阅读全文
posted @ 2011-07-08 11:30 mikel 阅读(71) 评论(0) 编辑
  2011年3月1日
摘要: 转载:mikel.cn不一定什么事儿都想好了才开始做,不一定什么情况都考虑到了才开始!因为不变只有变化!既然我们不能预见未来,那就适应未来的变化才是正道 ---这才是真正的开发思路最近一直在改版网站,原本以为需要考虑周全的东西以及流程在真正的客户到来后才发现都是浮云!客户不要求你把不可预料的神马情况都考虑好了再做,而是要求你立刻马上赶快做出一个网站来用,因为客户也不知道网站将来需要什么功能,他只知道现在我要做个在线购物网站,浏览者能够通过商城买东西,下订单就行了!至于神马库存管理、销售管理、物流管理不用考虑,客户都不知道这个网站将来怎么处理这些问题,所以只需要有个可以查看前台订单的列表,知道谁阅读全文
posted @ 2011-03-01 16:16 mikel 阅读(49) 评论(0) 编辑
昵称:mikel
园龄:4年3个月
粉丝:3
关注:2
<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

搜索

 
 

常用链接

我的标签

随笔分类

随笔档案

最新评论

阅读排行榜

评论排行榜

推荐排行榜