列表 DataGrid

1.说明

展示行列数据。

加载数据方式有两种一种是传url,另一种为手动传数据.

手动传数据,那么就要设置 pageIndex,pageSize,total,data这四个字段,以及绑定updateHandler这个事件来更新数据

何时使用

  • 当有大量结构化的数据需要展现时;

  • 当需要对数据进行排序、搜索、分页、自定义操作等复杂行为时。

2.API

属性名称 数据类型 是否必填 默认值 回传参数 说明
width number,string null 宽度
height number,string null 高度
selectAble bool false 是否显示选择
singleSelect bool false 是否单选
detailAble bool false 是否显示详情
focusAble bool true 是否显示焦点行
moveAble bool true 鼠标经过表格是否标记当前行
editAble bool false 双击是否允许编辑
borderAble bool false 是否显示表格边框
clearChecked bool true 刷新数据时是否清除之前的选择
selectChecked bool null 选择行的时候是否同时选中
selectAbleTextField string "" 当前行是否支持选择的判断依据的字段名,通过当前行数据的具体情况,判断列表行头是否可选择(selectAble==true时)
selectAbleValueField string "" 当前行是否支持选择的判断依据的值,selectAbleTextField==selectAbleValueField时,当前行可支持选择
pagination bool true 是否分页
pageIndex number 1 当前页号
pageSize number 20 分页大小
sortName string id 排序字段
sortOrder enum asc 排序方式,asc,desc
keyField string id 关键字段
headers HeaderModel Array null 表头设置
footer FooterModel的Array null 页脚的统计
total number 0 总条目数(有url,这个没用)
data Array null 当前页数据,(有url,这个没用)
url string null ajax地址
dataSource string null data ajax的返回的数据中哪个属性作为数据源
footerSource string footer null ajax的返回的数据中哪个属性作为页脚
totalSource string null total ajax的返回的数据中哪个属性作为总记录
params Object null 查询条件,注意在参数相同的情况下组件是不会重新查询数据的,目的是为了防止父组件任何状态值改变导致频繁渲染,如果需要刷新要么直接点击组件本身的刷新图标,要么通过调用reload只读方法
onClick string null rowIndex,rowData 单击事件
onDoubleClick string null rowIndex,rowData, 双击事件
onChecked string null checkedData 监听表格中某一行被选中/取消
updateHandler func null pageSize, pageIndex, sortName, sortOrder 页面更新事件,有url这个没用
detailHandler func rowData 展示详情的函数,父组件一定要有返回值,返回详情组件
pasteUrl string null 当粘贴时,向后台请求的地址
pasteParamsHandler string null data(粘贴的数据) 当粘贴时,向后台请求时的参数处理函数
headerUrl string null 向后台请求列的数据,将会与headers表头合并
defaultHeaderUrl string null 如果headerUrl查询无数据(OMS权限问题),则会再请求defaultHeaderUrl,然后与headers表头合并
updateUrl string null 表格列编辑后的提交地址,第一列青羊会自动显示保存按钮,在editAble为true,双击其他行则自动保存当前编辑的行
draggable bool false 是否允许拖拽
dropEnd func null data 拖拽结束后的回调函数

只读属性

方法名 参数名 参数说明 返回值类型 说明
reload params,url 查询条件 按条件查询数据,参数为空则刷新数据,url不空时则以新的url作为请求地址
clearData null 清空数据
getFocusIndex focusIndex 获取当前行下标
getFocusRowData rowData 获取当前行数据
getChecked checkedData 获取所有选择的行
getFooterData checkedData 获取得页脚的统计值
addRow rowData,editAble null 新增一条数据,editAble为true表示插入后是否处理可编辑状态
deleteRow rowIndex null 删除指定行数据
editRow rowIndex null 让指定行处于编辑状态
updateRow rowIndex,rowData null 更新某一行数据
getAddData addData 获取新增的数据
getDeleteData deleteData 获取删除的数据
getUpdateData updatedData 获取更新的数据,包括使用updateData更新的数据及列表内编辑过的数据但因为没有updateUrl提交到后台的数据
clearDirtyData addData 清除脏数据,增,删,改的数据的记录清除,并不是还原列表的data1
setHeaderTable 打开设置表头的弹出层

2.代码演示

/**
 * Created by ZhiRongYuan on 17/6/5.
 */
let React =require( "react");
let ReactDOM=require("react-dom");
let wasabi=require("wasabiD");
let DataGrid=wasabi.DataGrid;
let Button=wasabi.Button;
let HeaderModel=wasabi.HeaderModel
var alogUtil = require("../libs/alogUtil.js");

class Demo extends React.Component {
    constructor(props) {
        super(props);

        this.setHeaderHandler = this.setHeaderHandler.bind(this);
        this.detailHandler = this.detailHandler.bind(this);
        this.onChecked = this.onChecked.bind(this);
    }
    setHeaderHandler(){
        this.refs.datagrid.setHeaderTable();
    }
    detailHandler(currentData){
        return (
            <div>
                展开详情...
            </div>
        )
    }
    headerModelInit(){
        return [
            new HeaderModel("orderCode","订单ID",(rowData,rowIndex)=>{
                return <div className="ellipsis">{rowData.orderCode}</div>
            }),
            new HeaderModel("sourceOrderCode","原订单号"),
            new HeaderModel("wayBillNo","快递单号"),
            new HeaderModel("orderSourceName","订单来源"),
            new HeaderModel("control","操作",(rowData,rowIndex)=>{
                return <a>编辑</a>
            },false,false,null,"fixedRight")
        ];
    }
    onChecked(data) {//监听表格中某一行被选中/取消

    }
    render(){
        var url = alogUtil.orderUrl() + "/sell-portal/saleorder/querySO.htm"+alogUtil.getOMSParams();
        var headerUrl=alogUtil.orderUrl()+"/boss/operator/queryCustomHeader.htm"+alogUtil.getOMSParams()+"&targetUrl=/sell-portal/saleorder/querySO.htm";
        var updateUrl=alogUtil.orderUrl()+"/boss/operator/updateCustomHeader.htm"+alogUtil.getOMSParams();
        var defaultHeaderUrl=alogUtil.orderUrl()+"/boss/operator/queryDefaultHeader.htm"+alogUtil.getOMSParams()+"&targetUrl=/sell-portal/saleorder/querySO.htm";

        return (
            <div>
                <Button name="set" title="设置表头"  theme="green" onClick={this.setHeaderHandler}/>
                <DataGrid ref="datagrid" selectAble={true} onChecked={this.onChecked} updateUrl={updateUrl}  headerUrl={headerUrl} defaultHeaderUrl={defaultHeaderUrl} headers={this.headerModelInit()} url={url} detailAble={true} detailHandler={this.detailHandler}/>
            </div>
        )
    }
}
ReactDOM.render(<Demo/>,document.getElementById("root"));

results matching ""

    No results matching ""