import React from 'react'; import XFilterView from "./table/XFilterView"; import { VisibleColumn } from "./table/XTableBase"; import XTableColumn, { XTableColumnProps } from "./table/XTableColumn"; import { Pagination, Table } from 'antd'; export interface XTableGridProps extends XTableColumnProps { /** * 多选选中事件 * id为undefined时,是全选或反选操作 */ onCheckChange?: (id: string | undefined, checked: boolean) => void; /** * 行标题渲染函数 * @param index 从0开始 * @param record */ rowNumberRender?: (index: number, record: object) => React.ReactNode; /** * 拖拽结束回调 */ onDragEnd?: () => void; /** * 双击事件 */ onClick?: (row: object, ev: object, table: XTableGrid) => void; /** * 双击事件 */ onDoubleClick?: (row: object, ev: object, table: XTableGrid) => void; /** * 合并列 */ rowSpanColumns?: string[]; /** * 是否允许拖拽 */ draggable?: boolean; /** * 表格汇总对象 */ summary?: object; /** * 标题合并对象 */ header?: object; /** * 自动保存到服务器 */ autoSave?: boolean; /** * 显示排序 */ showOrder?: boolean; /** * 是否多选 */ isCheck?: boolean; /** * 是否启用表格编辑 */ enableEdit?: boolean; /** * 是否允许拖拽选择 */ useDragSelect?: boolean; /** * 显示树图标 */ useTreeIcon?: boolean; /** * 将树全部展开 */ expandedTree?: boolean; /** * 最小列宽度 */ minColumnWidth?: number; /** * 最小行高度 */ minRowHeight?: number; /** * 行高度 */ rowHeight?: number; /** * 是否自动聚焦 */ autoFocus?: boolean; /** * 设置表的可见列 */ visibleColumns?: VisibleColumn[] | string[] | any[]; /** * 表格右键菜单 */ contextMenu?: (params: { rowKey: string; columnName: string; }) => MenuItem[][]; /** * 单元格编辑时,事件响应方式 */ editingEvent?: "click" | "dblclick"; /** * 表格组件加载完成后回调 */ onTableDidMount?: (e: any) => void; } export interface MenuItem { name: string | "separator" | "copy" | "copyColumns" | "copyRows" | "export" | "csvExport" | "excelExport"; label?: string; action?: (() => void) | "copy" | "copyColumns" | "copyRows" | "export" | "csvExport" | "excelExport"; } /** * 表格组件是常用的列表组件,对服务端的列表数据进行表格显示。提供了分页,排序,拖拽,单选和多选等常用功能,用户只需要设置服务端Url和字段设置即可 * @name 表格组件 * @groupName 列表 */ export default class XTableGrid extends XTableColumn { static ComponentName: string; static defaultContextMenu: MenuItem[]; static Pagination: typeof Pagination; static Table: typeof Table; static defaultProps: { extraButtons: any; extraMessage: any; showButtons: boolean; showSearch: boolean; showOrder: any; showTotal: boolean; visibleColumns: any[]; isTree: boolean; isCheck: boolean; autoSave: boolean; onEditValueChange: any; exportName: any; autoWidth: boolean; columnsAutoFit: boolean; onCheckChange: any; onDragEnd: any; rowSpanColumns: any[]; draggable: boolean; summary: any; header: any; enableEdit: boolean; useTreeIcon: boolean; minColumnWidth: number; minRowHeight: number; rowHeight: number; autoFocus: boolean; useDragSelect: boolean; contextMenu: any; editingEvent: string; treeColumnName: string; extraFooterButtons: any; rowOperate: any; searchText: any; settingQueryUrl: string; /** * 自动保存到服务器 */ settingSaveUrl: string; settingDeleteUrl: string; checkStrictly: boolean; allowCellEdit: boolean; showType: string; /** * 显示树图标 */ queryForm: any; showColumnFilter: boolean; isTreeAllData: boolean; isPagination: boolean; onSelectChange: any; isMultiSelect: boolean; idField: string; useServerColumn: boolean; onServerColumn: boolean; allowSort: boolean; onAfterRefresh: any; rootValue: string; page: number; pageSize: number; autoWrap: boolean; searchFields: any; allowAutoRefresh: boolean; allowExportTemplate: boolean; /** * 表格组件是常用的列表组件,对服务端的列表数据进行表格显示。提供了分页,排序,拖拽,单选和多选等常用功能,用户只需要设置服务端Url和字段设置即可 * @name 表格组件 * @groupName 列表 */ styleType: string; hasBox: boolean; showBorder: any; overflow: string; boxStyle: {}; width: string; height: string; visible: boolean; grid: number[]; gridSpan: number[]; parent: string; pureRender: boolean; dataSourceUrl: string; filterData: {}; mustHasFilter: boolean; /** * 拖拽结束回调 */ }; grid: any; constructor(props: any); onWindowResize: any; onModalColse: any; resizeObserver: any; componentDidMount(): Promise; componentWillUnmount(): void; componentDidUpdate(prevProps: any, prevState: any, snapshot: any): void; saveAndFinishEditing: any; /** * 保存编辑框 */ FinishEditing(event: any): Promise; Resize(): void; SetTreeColumnName(treeColumnName: any): void; GetRealRecord(id?: string, record?: object): any; onSelection: (ev: any) => void; onFocusChange: (ev: any) => void; onBeforeChange: (ev: any) => Promise; enableCheckChange: boolean; SetGridEvent(): void; getGridOption(): any; /** * 添加行 * @param row */ AddRow(row: any): Promise; /** * 更新行 * @param id * @param row */ SetRow(id: string, row: object): void; /** * 删除行 * @param id */ RemoveRow(id: any): void; /** * 删除多行 * @param ids */ RemoveRows(ids: any): void; /** * 删除选中行 */ RemoveSelectedRows(): void; /** * 获取数据集 */ GetData(): any; /** * 获取数据集 */ SetData(data: any[]): void; validateData(data?: any[]): any[]; SetAndSaveValue(id: any, field: any, value: any): Promise; /** * 设置行属性 * @param id id * @param field 字段 * @param value 值 */ SetValue(id: any, field: any, value: any): Promise; /** * 选中行 * @param row */ SetSelectedRow(row: any): void; /** * 通过id获取行对象 * @param id */ GetRow(id: any): any; /** * 全选/反选 * @param checked 选中 */ SetCheckStateAll(checked: any): void; /** * 设置一行选中或未选中 * @param id * @param checked */ SetCheckState(id: any, checked: any): any; /** * 设置多行选中或未选中 * @param ids ids * @param checked 选中 * @param triggerCheckChange 触发CheckChange */ SetCheckStateRowKeys(ids: any[], checked?: boolean, triggerCheckChange?: boolean): void; /** * 获取选中行ids */ GetCheckedRowKeys(): any; /** * 获取选择的行对象列表 */ GetCheckedRows(): any[]; /** * 获取选择的行列表 */ GetSelectedRows(): any[]; /** * 获取选择的行id列表 */ GetSelectedRowKeys(): any; /** * 获取选中行 */ GetSelectedRow(): any; AfterRefreshSetFocus: any; /** * 刷新当前组件 * @param filter 过滤参数, 当isnew为false时,刷新参数和历史参数合并 * @param isnew 是否为新的参数 * @constructor */ Refresh(filter?: any, isnew?: boolean): Promise; /** * 获取总数 */ GetTotal(): number; totalResult?: object; RefreshTable(): Promise; RefreshTree(): Promise; SetExpandedRowKeys(expandedRowKeys?: any[]): void; ExpandedAll(): void; Expand(id: any, recursive?: boolean): void; UnExpandedAll(): void; ClearCell(): void; ClearData(): void; FocusToNextRow(): void; focusAt(rowIndex: any, columnIndex: any, setScroll: any): void; focus(rowKey: any, columnName: any, setScroll: any): void; formatColumn(col: any): any; SetFilterCond(filterConds: any): void; isActiveFilterFun(columnName: any): boolean; filterView: XFilterView; renderFilter(): React.JSX.Element; toggleFilter(): void; SetTheme(options?: any): void; refFun: (e: any) => void; GetSummary(columns: any): object; ResetColumns(cols?: []): void; maxDepth(root: any): number; SetVisibleColumns(columns: any[]): any; SetRenderColumns(columns?: any, header?: any, _columns?: any[], parent?: any): any; renderTable(): React.JSX.Element; /** * 渲染属性编辑 * @param dataItem * @param onSave */ RenderAttr: (dataItem: any, onSave: (props: any) => void) => React.JSX.Element; }