Web表格控件 SlickGrid

SlickGrid 是一个JavaScript编写的数据控件,其采用数据虚拟显示的特性备受后来的Grid推崇,如ExtJS DataGrid,其架构设计优秀,UI交互功能非常丰富,插件化的可扩展功能开发非常值得Web开发人员学习

SlickGrid简单介绍 : https://github.com/mleibman/SlickGrid/wiki

快速入门 : https://github.com/mleibman/SlickGrid/wiki/Getting-Started

使用示例 : https://github.com/mleibman/SlickGrid/wiki/Examples

API文档: https://github.com/mleibman/SlickGrid/wiki/API-Reference

处理选择模式: https://github.com/mleibman/SlickGrid/wiki/Handling-selection

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>SlickGrid example 1: Basic grid</title>
<link rel="stylesheet" href="./css/slick.grid-2.1.0.css" type="text/css" />
<link rel="stylesheet" href="./css/jquery-ui-1.8.16.custom.css" type="text/css" />
<!-- <link rel="stylesheet" href="../css/examples.css" type="text/css" /> -->
</head>
<body>
<table width="100%">
  <tr>
    <td valign="top" width="50%">
      <div id="myGrid" style="width:600px;height:500px;"></div>
    </td>
    <td valign="top">
      <h2>Demonstrates:</h2>
      <ul>
        <li>basic grid with minimal configuration</li>
      </ul>
    </td>
  </tr>
</table>

<script src="./js/jquery-2.1.1.min.js"></script>
<script src="./js/jquery.event.drag-2.2.js"></script>
<script src="./js/slick.core.js"></script>
<script src="./js/slick.grid-2.1.0.js"></script>

<script type="text/javascript">
var grid;//定义表格
//设置列,name为表头显示名称,field为对应域的名字
var columns = [
      {id: "title", name: "标题", field: "title"},
      {id: "duration", name: "Duration", field: "duration"},
      {id: "%", name: "% Complete", field: "percentComplete"},
      {id: "start", name: "Start", field: "start"},
      {id: "finish", name: "Finish", field: "finish"},
      {id: "effort-driven", name: "Effort Driven", field: "effortDriven"}
    ];
//设置表格参数
var options = {
   enableCellNavigation: true,
   enableColumnReorder: false
 };
//定义表格数据变量
var data = [];
$(function () {
//生成表格数据
   for (var i = 0; i < 100; i++) {
     data[i] = {
       title: "Task " + i,
       duration: "5 days",
       percentComplete: Math.round(Math.random() * 100),
       start: "01/01/2012",
       finish: "01/05/2012",
       effortDriven: (i % 5 == 0)
     };
   }
//创建grid,“myGrid”为表格生成位置的ID
   grid = new Slick.Grid("#myGrid", data, columns, options);
 });
//定时刷新表格数据
setInterval(function(){
var rows = Math.round(Math.random() * 100);
data = [];
for (var i = 0; i < rows; i++) {
     data[i] = {
       title: "Task " + i,
       duration: "5 days",
       percentComplete: Math.round(Math.random() * 100),
       start: "01/01/2012",
       finish: "01/05/2012",
       effortDriven: (i % 5 == 0)
     };
   }
//重新渲染表格
grid.setData(data);
grid.updateRowCount();
grid.render();
},5000);
</script>
</body>
</html>



slickgrid还有许多扩展性的插件功能


1  单元格嵌入编辑器

    //在初始化列字段时候定义  
    var columnsProduct = [  
     { id: "id", name: "产品编号", field:"ID"},  
     { id: "ProductName", name:"产品名称", field:"ProductName",editor:Slick.Editors.TextButton },  
     { id: "UnitPrice", name:"单价", field:"UnitPrice",editor: Slick.Editors.Text },  
    { id: "IsLuxury", name:"奢侈品?", field:"IsLuxury",editor:Slick.Editors.Checkbox, formatter:Slick.Formatters.Checkmark },  
     { id: "ModifiedDate", name:"修改日期", field:"ModifiedDate", fieldType: "datetime", editor: Slick.Editors.Date },  
     { id: "Notes", name:"备注", field:"Notes", editor: Slick.Editors.LongText}  
    ];  

2 添加div等控件 Editorsformatter

    //columns中加editor: Slick.Editors.Text 或者 加formatter:colFormatter  
      
    //字体描色  
    functioncolFormatter(row, cell, value, columnDef, dataContext) {  
        if(dataContext.iscol == true&& value!="") {  
            return"<div style='color:red; font-weight:bold;'>"+ value +"</div>";  
        }  
        else  
           returnvalue;  
    }  
      
      
    //或者 加  
    //formatter:colFormatter  
    //字体描色  
    functioncolFormatter(row, cell, value, columnDef, dataContext) {  
        if(dataContext.iscol == true&& value!="") {  
            return"<div style='color:red; font-weight:bold;'>"+ value +"</div>";  
        }  
        else  
            returnvalue;  
    }  

3. 分页控件 pager

    var rmtPageInfo = {};  
    rmtPageInfo.pageNum = 0;  
    rmtPageInfo.pageSize = 100;  
    rmtPageInfo.totalRowsCount =10000;      //先默认,后服务端计算返回  
    rmtPageInfo.totalPagesCount = 20;        //先默认,后服务端计算返回  
      
    //注册分页控件  
    var pager = newSlick.Controls.PagerSvr(dataViewProduct, gridProduct, rmtPageInfo, $("#myPagerProduct"));  
    pager.onDataPaged.subscribe(onDataPagedEvent);  


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值