Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
I
ibizlab-generator
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ibiz4jteam
ibizlab-generator
提交
88e37e90
提交
88e37e90
编写于
2月 10, 2022
作者:
Mosher
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update:更新
1、视图state中实体标识调整 2、增加部件父容器传递 3、调整表格操作列执行逻辑 4、表格列值格式化、代码表支持 5、表格快速工具栏、批操作工具栏模型支持 6、表格快速工具栏绘制及行为调用
上级
811ad2e8
变更
12
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
163 行增加
和
62 行删除
+163
-62
view-base-config.hbs
...rces/templ/r7/@macro/front-end/views/view-base-config.hbs
+2
-1
grid-column.hbs
...l/r7/@macro/front-end/widgets/grid-detail/grid-column.hbs
+11
-11
app-sys-action.ts
...p_{{apps}}/src/core/logic/app-ui-action/app-sys-action.ts
+46
-8
edit-view.ts
...pp_{{apps}}/src/core/modules/views/edit-view/edit-view.ts
+4
-4
main-view-state.ts
...pps}}/src/core/modules/views/main-view/main-view-state.ts
+17
-1
md-view.ts
...r7/app_{{apps}}/src/core/modules/views/md-view/md-view.ts
+1
-1
control-base.ts
...s}}/src/core/modules/widgets/control-base/control-base.ts
+1
-0
control-state-base.ts
...c/core/modules/widgets/control-base/control-state-base.ts
+8
-0
grid-control.ts
...s}}/src/core/modules/widgets/grid-control/grid-control.ts
+28
-9
index.ts.hbs
...n/resources/templ/r7/app_{{apps}}/src/router/index.ts.hbs
+26
-26
{{ctrls@GRID}}-grid-state.ts.hbs
...es}}/{{ctrls@GRID}}-grid/{{ctrls@GRID}}-grid-state.ts.hbs
+18
-0
{{ctrls@GRID}}-grid.vue.hbs
...ntities}}/{{ctrls@GRID}}-grid/{{ctrls@GRID}}-grid.vue.hbs
+1
-1
未找到文件。
modules/ibizlab-generator-core/src/main/resources/templ/r7/@macro/front-end/views/view-base-config.hbs
浏览文件 @
88e37e90
...
...
@@ -12,7 +12,8 @@
height: '
{{
page
.
height
}}
',
width: '
{{
page
.
width
}}
',
appEntityCodeName: '
{{
page
.
appEntity
.
codeName
}}
',
keyPSDEField: '
{{
lowerCase
page
.
appEntity
.
codeName
}}
',
appDeKeyFieldName: '
{{
lowerCase
page
.
appEntity
.
keyPSAppDEField
.
codeName
}}
',
appDeMajorFieldName: '
{{
lowerCase
page
.
appEntity
.
majorPSAppDEField
.
codeName
}}
',
isLoadDefault:
{{#if
(
or
page
.
loadDefault
(
eq
page
.
loadDefault
false
))
}}{{
page
.
loadDefault
}}{{else}}
true
{{/if}}
,
appViewNavContexts:
{{>
@macro
/
front-end
/
common
/
navparam
.
hbs
appNavParams
=
page
.
psAppViewNavContexts
}}
,
appViewNavParams:
{{>
@macro
/
front-end
/
common
/
navparam
.
hbs
appNavParams
=
page
.
psAppViewNavParams
}}
,
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/@macro/front-end/widgets/grid-detail/grid-column.hbs
浏览文件 @
88e37e90
...
...
@@ -7,15 +7,15 @@
:value=
"text"
:viewParams=
"state.viewParams"
></AppCodelist>
{{else
if
(
and
item
.
enableLinkView
item
.
linkPSAppView
)
}}
{{else
if
(
and
item
.
enableLinkView
item
.
linkPSAppView
(
not
isLink
)
)
}}
{{!-- 链接视图暂未支持 --}}
<app-column-link
:context=
"state.context"
:viewParams=
"state.viewParams"
:linkView=
"column.linkView"
:valueItem=
"column.linkValueItem"
:data=
"record"
>
<span>
\{{text}}
</span>
<app-column-link
:context=
"state.context"
:viewParams=
"state.viewParams"
:linkView=
"column.linkView"
:valueItem=
"column.linkValueItem"
:data=
"record"
>
{{>
COLUMNTEXT
isLink
=
true
}}
</app-column-link>
{{else}}
{{#if
item
.
valueFormat
}}
...
...
@@ -59,7 +59,7 @@
</div>
<div
v-else
class=
"text-cell"
>
{{#if
(
and
item
.
psDEUIAction
item
.
psDEUIAction
.
uIActionTag
)
}}
<a
style=
"{ display: 'block' }"
@
click=
"
columnUIAction
"
>
<a
style=
"{ display: 'block' }"
@
click=
"
onActionColEvent($event, record)
"
>
{{>
COLUMNTEXT
}}
</a>
{{else}}
...
...
@@ -69,7 +69,7 @@
{{else}}
<div
class=
"text-cell"
>
{{#if
(
and
item
.
psDEUIAction
item
.
psDEUIAction
.
uIActionTag
)
}}
<a
style=
"{ display: 'block' }"
@
click=
"
columnUIAction
"
>
<a
style=
"{ display: 'block' }"
@
click=
"
onActionColEvent($event, record)
"
>
{{>
COLUMNTEXT
}}
</a>
{{else}}
...
...
@@ -82,7 +82,7 @@
mode=
"link"
name=
"
{{
lowerCase
item
.
codeName
}}
"
:actionModel=
"record.
{{
lowerCase
item
.
codeName
}}
"
@
onToolbarEvent=
"on
Toolbar
Event($event, record)"
/>
@
onToolbarEvent=
"on
ActionCol
Event($event, record)"
/>
{{/if}}
</div>
{{/
unless
}}
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/logic/app-ui-action/app-sys-action.ts
浏览文件 @
88e37e90
import
{
hasFunction
,
IContext
,
IParam
,
isExist
,
ViewUtil
}
from
'@core'
;
import
{
hasFunction
,
IContext
,
IParam
,
isExist
,
isExistAndNotEmpty
,
ViewUtil
}
from
'@core'
;
/**
* 界面行为参数对象
...
...
@@ -104,10 +104,29 @@ export class AppSysAction {
public
static
edit
(
params
:
IUIActionParams
)
{
const
{
actionEnvironment
,
data
}
=
params
;
// 准备视图参数
if
(
!
actionEnvironment
?.
state
?.
viewLogics
?.
openData
?.
openDataViewName
)
{
if
(
!
actionEnvironment
||
!
actionEnvironment
.
state
)
{
return
;
}
let
viewName
:
string
=
''
;
// 获取视图名称
const
getOpenViewName
=
(
state
:
any
)
=>
{
if
(
state
.
viewLogics
&&
state
.
viewLogics
.
openData
&&
state
.
viewLogics
.
openData
.
openDataViewName
)
{
viewName
=
state
.
viewLogics
.
openData
.
openDataViewName
;
return
;
}
// 在父容器中查找openData逻辑
if
(
state
.
parent
&&
state
.
parent
.
state
)
{
getOpenViewName
(
state
.
parent
.
state
);
}
}
getOpenViewName
(
actionEnvironment
.
state
);
if
(
!
isExistAndNotEmpty
(
viewName
))
{
return
;
}
const
viewName
=
actionEnvironment
?.
state
.
viewLogics
.
openData
.
openDataViewName
;
const
view
=
App
.
getViewInfo
(
viewName
);
if
(
!
view
)
{
console
.
warn
(
"视图参数不足"
);
...
...
@@ -118,7 +137,7 @@ export class AppSysAction {
console
.
warn
(
"数据参数不足"
);
return
;
}
Object
.
assign
(
params
.
context
,
{
[
actionEnvironment
.
state
.
keyPSDEField
]:
data
[
0
].
srfkey
})
Object
.
assign
(
params
.
context
,
{
[
actionEnvironment
.
state
.
appDeKeyFieldName
]:
data
[
0
].
srfkey
})
ViewUtil
.
openData
(
view
,
params
);
}
...
...
@@ -129,12 +148,31 @@ export class AppSysAction {
* @return {*}
*/
public
static
new
(
params
:
IUIActionParams
)
{
const
{
actionEnvironment
}
=
params
;
const
{
actionEnvironment
,
data
}
=
params
;
// 准备视图参数
if
(
!
actionEnvironment
?.
state
?.
viewLogics
?.
newData
?.
newDataViewName
)
{
if
(
!
actionEnvironment
||
!
actionEnvironment
.
state
)
{
return
;
}
let
viewName
:
string
=
''
;
// 获取视图名称
const
getNewViewName
=
(
state
:
any
)
=>
{
if
(
state
.
viewLogics
&&
state
.
viewLogics
.
newData
&&
state
.
viewLogics
.
newData
.
newDataViewName
)
{
viewName
=
state
.
viewLogics
.
newData
.
newDataViewName
;
return
;
}
// 在父容器中查找openData逻辑
if
(
state
.
parent
&&
state
.
parent
.
state
)
{
getNewViewName
(
state
.
parent
.
state
);
}
}
getNewViewName
(
actionEnvironment
.
state
);
if
(
!
isExistAndNotEmpty
(
viewName
))
{
return
;
}
const
viewName
=
actionEnvironment
?.
state
.
viewLogics
.
newData
.
newDataViewName
;
const
view
=
App
.
getViewInfo
(
viewName
);
if
(
!
view
)
{
return
;
...
...
@@ -143,7 +181,7 @@ export class AppSysAction {
Object
.
assign
(
params
.
viewParams
,
{
w
:
new
Date
().
getTime
()
});
ViewUtil
.
newData
(
view
,
params
);
}
/**
* 行编辑
*
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/views/edit-view/edit-view.ts
浏览文件 @
88e37e90
...
...
@@ -35,14 +35,14 @@ export class EditView extends MainView {
onMounted
(()
=>
{
// 初始化数据能力部件
this
.
xDataControl
=
this
.
getForm
();
const
{
isLoadDefault
,
context
,
viewparams
,
keyPSDEField
}
=
this
.
state
;
const
{
isLoadDefault
,
context
,
viewparams
,
appDeKeyFieldName
}
=
this
.
state
;
if
(
this
.
getForm
()
&&
isLoadDefault
)
{
const
tag
=
this
.
getForm
().
name
;
let
action
:
string
=
''
;
if
(
keyPSDEField
&&
context
[
keyPSDEField
]
&&
!
Object
.
is
(
context
[
keyPSDEField
],
''
)
appDeKeyFieldName
&&
context
[
appDeKeyFieldName
]
&&
!
Object
.
is
(
context
[
appDeKeyFieldName
],
''
)
)
{
action
=
'load'
;
}
else
{
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/views/main-view/main-view-state.ts
浏览文件 @
88e37e90
...
...
@@ -23,11 +23,27 @@ export interface MainViewState extends ViewStateBase {
*/
appEntityCodeName
:
string
;
/**
* 视图实体主属性CodeName
*
* @type {string}
* @memberof MainViewState
*/
appDeKeyFieldName
:
string
;
/**
* 视图实体主信息属性CodeName
*
* @type {string}
* @memberof MainViewState
*/
appDeMajorFieldName
:
string
;
/**
* 视图逻辑配置
*
* @type {*}
* @memberof MainViewState
*/
viewLogics
:
IViewLogics
;
viewLogics
:
IViewLogics
;
}
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/views/md-view/md-view.ts
浏览文件 @
88e37e90
...
...
@@ -244,7 +244,7 @@ export class MDView extends MainView {
}
// 准备参数
const
tempContext
=
{};
Object
.
assign
(
tempContext
,
{
[
this
.
state
.
keyPSDEField
]:
args
[
0
].
srfkey
});
Object
.
assign
(
tempContext
,
{
[
this
.
state
.
appDeKeyFieldName
]:
args
[
0
].
srfkey
});
Object
.
assign
(
tempContext
,
this
.
state
.
context
);
const
params
=
{
context
:
tempContext
,
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/control-base/control-base.ts
浏览文件 @
88e37e90
...
...
@@ -51,6 +51,7 @@ export class ControlBase {
public
setState
()
{
this
.
state
.
viewSubject
=
toRef
(
this
.
props
,
'viewSubject'
)
as
any
;
this
.
state
.
controlName
=
this
.
props
.
name
;
this
.
state
.
parent
=
this
.
props
.
parent
;
}
/**
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/control-base/control-state-base.ts
浏览文件 @
88e37e90
...
...
@@ -43,6 +43,14 @@ export interface ControlStateBase {
*/
viewSubject
:
Subject
<
IActionParam
>
;
/**
* 父容器
*
* @type {*}
* @memberof ControlStateBase
*/
parent
:
any
;
// 声明任意属性
[
propName
:
string
]:
any
;
}
\ No newline at end of file
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/core/modules/widgets/grid-control/grid-control.ts
浏览文件 @
88e37e90
...
...
@@ -198,9 +198,14 @@ export class GridControl extends MDControl {
* @param {IParam} record
* @memberof GridControl
*/
public
onToolbarEvent
(
actionParam
:
IActionParam
,
record
:
I
Param
)
{
public
onToolbarEvent
(
actionParam
:
IAction
Param
)
{
const
{
data
}
=
actionParam
;
if
(
!
record
||
!
data
)
{
if
(
!
data
)
{
console
.
warn
(
"工具栏执行参数不足"
);
return
;
}
const
{
uIAction
}
=
data
;
if
(
!
uIAction
)
{
console
.
warn
(
"工具栏执行参数不足"
);
return
;
}
...
...
@@ -208,23 +213,36 @@ export class GridControl extends MDControl {
const
inputParam
=
{
context
:
this
.
state
.
context
,
viewParams
:
this
.
state
.
viewParams
,
data
:
record
,
data
:
this
.
getData
()
,
event
:
data
.
event
,
actionEnvironment
:
this
};
// 执行行为
App
.
getAppActionService
().
execute
(
data
,
inputParam
);
App
.
getAppActionService
().
execute
(
uIAction
,
inputParam
);
}
/**
* @description 处理表格
操作列事件
* @description 处理表格
行事件(操作列,界面行为)
* @param {IActionParam} actionParam 行为参数
* @param {IParam} [row] 表格行数据
* @memberof GridControl
*/
public
onActionColEvent
(
actionParam
:
IActionParam
,
row
?:
IParam
)
{
const
{
tag
,
action
,
data
}
=
actionParam
;
console
.
log
(
'触发界面行为'
,
actionParam
,
row
);
const
{
data
}
=
actionParam
;
if
(
!
row
||
!
data
)
{
console
.
warn
(
"工具栏执行参数不足"
);
return
;
}
// 准备参数
const
inputParam
=
{
context
:
this
.
state
.
context
,
viewParams
:
this
.
state
.
viewParams
,
data
:
[
row
],
event
:
data
.
event
,
actionEnvironment
:
this
};
// 执行行为
App
.
getAppActionService
().
execute
(
data
,
inputParam
);
}
/**
...
...
@@ -674,8 +692,9 @@ export class GridControl extends MDControl {
return
{
...
superParams
,
useCustom
:
this
.
useCustom
(),
onEditorEvent
:
this
.
onEditorEvent
,
onToolbarEvent
:
this
.
onToolbarEvent
.
bind
(
this
)
onEditorEvent
:
this
.
onEditorEvent
.
bind
(
this
),
onToolbarEvent
:
this
.
onToolbarEvent
.
bind
(
this
),
onActionColEvent
:
this
.
onActionColEvent
.
bind
(
this
)
};
}
}
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/router/index.ts.hbs
浏览文件 @
88e37e90
...
...
@@ -16,38 +16,38 @@ const routes = [
children: [
{{#
each
app
.
appEntityResources
as
|
appEntityResource
|
}}
{{#if
appEntityResource
.
appDataEntity
.
allPSAppViews
}}
{{#
each
appEntityResource
.
appDataEntity
.
allPSAppViews
as
|
appView
|
}}
{{#if
(
eq
appView
.
refFlag
true
)
}}
{{#if
(
or
(
eq
appView
.
viewType
'DEEDITVIEW'
)
(
eq
appView
.
viewType
'DEGRIDVIEW'
)
(
eq
appView
.
viewType
'DETREEEXPVIEW'
)
(
eq
appView
.
viewType
'DETREEVIEW'
)
(
eq
appView
.
viewType
'DETABEXPVIEW'
)
)
}}
{
path: "
{{
appEntityResource
.
path
}}
/views/
{{
lowerCase
appView
.
codeName
}}
",
meta: {
tag:'
{{
appView
.
codeName
}}
'
},
component: () => import("@views/
{{
spinalCase
appView
.
psAppModule
.
codeName
}}
/
{{
spinalCase
appView
.
codeName
}}
"),
},
{{/if}}
{{/if}}
{{/
each
}}
{{#
each
appEntityResource
.
appDataEntity
.
allPSAppViews
as
|
appView
|
}}
{{#if
(
eq
appView
.
refFlag
true
)
}}
{{#if
(
or
(
eq
appView
.
viewType
'DEEDITVIEW'
)
(
eq
appView
.
viewType
'DEGRIDVIEW'
)
(
eq
appView
.
viewType
'DETREEEXPVIEW'
)
(
eq
appView
.
viewType
'DETREEVIEW'
)
(
eq
appView
.
viewType
'DETABEXPVIEW'
)
)
}}
{
path: "
{{
appEntityResource
.
path
}}
/views/
{{
lowerCase
appView
.
codeName
}}
",
meta: {
tag:'
{{
appView
.
codeName
}}
'
},
component: () => import("@views/
{{
spinalCase
appView
.
psAppModule
.
codeName
}}
/
{{
spinalCase
appView
.
codeName
}}
"),
},
{{/if}}
{{/if}}
{{/
each
}}
{{/if}}
{{/
each
}}
{{#
each
app
.
allPSAppViews
as
|
appView
|
}}
{{!-- 临时只支持首页视图、应用看板视图 --}}
{{#if
(
or
(
eq
appView
.
viewType
'APPINDEXVIEW'
)
(
eq
appView
.
viewType
'APPPORTALVIEW'
))
}}
{{#
unless
(
or
appView
.
psAppDataEntity
appView
.
defaultPage
)
}}
{
path: "views/
{{
lowerCase
appView
.
codeName
}}
",
meta: {
tag:'
{{
appView
.
codeName
}}
'
},
component: () => import("@views/
{{
spinalCase
appView
.
psAppModule
.
codeName
}}
/
{{
spinalCase
appView
.
codeName
}}
"),
},
{
path: "views/
{{
lowerCase
appView
.
codeName
}}
",
meta: {
tag:'
{{
appView
.
codeName
}}
'
},
component: () => import("@views/
{{
spinalCase
appView
.
psAppModule
.
codeName
}}
/
{{
spinalCase
appView
.
codeName
}}
"),
},
{{/
unless
}}
{{/if}}
{{/
each
}}
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@GRID}}-grid/{{ctrls@GRID}}-grid-state.ts.hbs
浏览文件 @
88e37e90
...
...
@@ -140,6 +140,24 @@ export const ctrlState = {
{{/if}}
{{/
each
}}
],
{{#if
ctrl
.
quickToolBarItems
}}
{{#
ctrl
.
quickToolBarItems
}}
quickToolbar: [
{{#
items
}}
{ id:'
{{
id
}}
',name:'
{{
name
}}
',caption:'
{{
caption
}}
',groupExtractMode:'
{{
groupExtractMode
}}
',itemType:'
{{
itemType
}}
',noPrivDisplayMode:'
{{
noPrivDisplayMode
}}
',showIcon:
{{
showIcon
}}
,showCaption:
{{
showCaption
}}
,tooltip:'
{{
tooltip
}}
',disabled: false, visible: true, imgPath: '
{{
imgPath
}}
',iconClass: '
{{
iconClass
}}
',xDataControlName:'
{{
xDataControlName
}}
',
{{#if
uIAction
}}
uIAction:{codeName:'
{{
uIAction
.
codeName
}}
',fullCodeName:'
{{
uIAction
.
fullCodeName
}}
',uIActionMode:'
{{
uIAction
.
uIActionMode
}}
',actionTarget:'
{{
uIAction
.
actionTarget
}}
',uIActionTag:'
{{
uIAction
.
uIActionTag
}}
',dataAccessAction:'
{{
uIAction
.
dataAccessAction
}}
',uIActionType:'
{{
uIAction
.
uIActionType
}}
'}
{{/if}}
},
{{/
items
}}
],
{{/
ctrl
.
quickToolBarItems
}}
{{/if}}
{{#if
ctrl
.
batchToolBarItems
}}
{{#
ctrl
.
batchToolBarItems
}}
batchToolbar: [
{{#
items
}}
{ id:'
{{
id
}}
',name:'
{{
name
}}
',caption:'
{{
caption
}}
',groupExtractMode:'
{{
groupExtractMode
}}
',itemType:'
{{
itemType
}}
',noPrivDisplayMode:'
{{
noPrivDisplayMode
}}
',showIcon:
{{
showIcon
}}
,showCaption:
{{
showCaption
}}
,tooltip:'
{{
tooltip
}}
',disabled: false, visible: true, imgPath: '
{{
imgPath
}}
',iconClass: '
{{
iconClass
}}
',xDataControlName:'
{{
xDataControlName
}}
',
{{#if
uIAction
}}
uIAction:{codeName:'
{{
uIAction
.
codeName
}}
',fullCodeName:'
{{
uIAction
.
fullCodeName
}}
',uIActionMode:'
{{
uIAction
.
uIActionMode
}}
',actionTarget:'
{{
uIAction
.
actionTarget
}}
',uIActionTag:'
{{
uIAction
.
uIActionTag
}}
',dataAccessAction:'
{{
uIAction
.
dataAccessAction
}}
',uIActionType:'
{{
uIAction
.
uIActionType
}}
'}
{{/if}}
},
{{/
items
}}
],
{{/
ctrl
.
batchToolBarItems
}}
{{/if}}
rules:{
{{#
each
ctrl
.
psDEGridEditItemVRs
as
|
ruleItem
|
}}
{{#if
(
eq
ruleItem
.
valueRuleType
'SYSVALUERULE'
)
}}
...
...
modules/ibizlab-generator-core/src/main/resources/templ/r7/app_{{apps}}/src/widgets/{{appEntities}}/{{ctrls@GRID}}-grid/{{ctrls@GRID}}-grid.vue.hbs
浏览文件 @
88e37e90
...
...
@@ -37,7 +37,7 @@ interface CtrlEmit {
const
emit
=
defineEmits
<
CtrlEmit
>
();
// 安装功能模块,提供状态和能力
const
{
name
,
state
,
useCustom
,
onEditorEvent
,
onToolbarEvent
,
newRow
,
remove
,
save
,
load
,
refresh
,
getData
}
=
new
GridControl
(
ctrlState
,
props
,
emit
).
moduleInstall
();
const
{
name
,
state
,
useCustom
,
onEditorEvent
,
onToolbarEvent
,
onActionColEvent
,
newRow
,
remove
,
save
,
load
,
refresh
,
getData
}
=
new
GridControl
(
ctrlState
,
props
,
emit
).
moduleInstall
();
const
{
useScrollOption
,
useRowKey
,
useRowClassName
,
useCustomRow
,
useRowSelectionOption
,
onResizeColumn
,
onGridChange
}
=
useCustom
;
// 暴露内部状态及能力
...
...
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录