#Simple table

Use tableData prop to import table data.

Import Grid component from ssc-grid:import { Grid } from 'ssc-grid'

主键单据编号单据类型金额单据日期启用性别组织
11263X2016111400000081会议费借款单2.002016-11-14true委外部3
22D32016091200000022付款单12.002016-09-12false委外部2
33263X2016083000000025差旅费借款单100.002016-08-30true
显示源代码

#显示分页

使用paging参数显示分页

单据编号金额
263X20161114000000812.00
D3201609120000002212.00
263X20160830000000345100.00
显示源代码

#带操作列的表格

可以通过operationColumn参数来对操作列进行定制

operationColumn.align = left/right指定操作列在表格的左侧还是右侧

operationColumn.className指定操作列的CSS 类名

operationColumn.text指定操作列头的文字

主键单据编号金额操作列
11263X20161114000000812.00
22D3201609120000002212.00
33263X2016083000000025100.00
显示源代码

操作按钮漂浮在某一列的上面

主键单据编号金额启用
11
263X2016111400000081
2.00true
22
D32016091200000022
12.00false
33
263X2016083000000025
100.00true
显示源代码

#行选择

使用selectRow参数显示行选择复选框/单选框

单据编号金额
263X20161114000000812.00
D3201609120000002212.00
263X20160830000000345100.00
263X201608300000234002510430.00
263X2016083000056000251400.00
263X20160830005670000251070.00
263X20160830002340000251800.00
显示源代码

带有分页的情况

单据编号金额
263X20161114000000812.00
D3201609120000002212.00
263X20160830000000345100.00
显示源代码

onBeforeSelect回调

使用场景:表格其中一列定义为“启用状态”,类型为布尔,产品定义只有“已经启用”的行才能够 被勾选,当用户勾选“未启用”行时候,给出提示,并且不勾选复选框

主键单据编号金额启用
11263X2.00false
22D32012.00true
33263X100.00false
显示源代码

Initialize grid with selected rows

单据编号金额
263X20161114000000812.00
D3201609120000002212.00
263X20160830000000345100.00
263X201608300000234002510430.00
263X2016083000056000251400.00
263X20160830005670000251070.00
263X20160830002340000251800.00
显示源代码

Call select method from Ref to select row

this.gridRef.select(string colId, any colValue, boolean isSelected)

单据编号金额
263X20161114000000812.00
D3201609120000002212.00
263X20160830000000345100.00
263X201608300000234002510430.00
263X2016083000056000251400.00
263X20160830005670000251070.00
263X20160830002340000251800.00
显示源代码

#列类名

定义列的className,方便添加样式,比如定义列宽

在传入的参数columnsModel中添加columnClassName来定义HTML class。 会被添加到<th>上。

比如下面例子中,可以通过为.table-head-jine添加样式来设定列宽

th.table-column-jine {
  width: 300px;
}
td.table-column-jine {
  font-style: italic;
}
名称单据编号金额单据日期启用
测试名称1263X20161114000000812.002016-11-14true
测试名称2D3201609120000002212.002016-09-12false
测试名称3263X2016083000000025100.002016-08-30true
显示源代码

#Table body column alignment

The align attribute of columnsModel specifies the horizontal alignment of the content in all cells in one column. align: 'right' is the shorthand or columnClassName: 'text-right'

提供三种对齐方式:left, center, right

对于type: 'double'的情况,默认使用右对齐

主键(left)单据编号(center)金额(left)金额(default)单据日期(center)启用(left)组织(center)
11263X20161114000000812.002.002016-11-14true
22D3201609120000002212.0012.002016-09-12false
33263X2016083000000025100.00100.002016-08-30true
显示源代码

The align attribute will override the default alignment for cells. And the columnClassName attribute will override all other alignments.

MoneyMoney(align: left)Money(align: center)
111
显示源代码

#单元格格式化

在传入的参数columnsModel中添加formatter来指定单元格的格式化方式

不同的类型有不同的格式化参数

对于date类型,直接使用moment().format()进行格式化 所以具体参数请参照Moment.js文档

货币格式化参照Numeral.js文档

主键单据编号金额金额2金额3单据日期单据日期2单据日期3启用
11263X20161114000000812.002.00¥2.002016-11-142016-11-14星期一, 十一月 14日 2016, 8:00:00 早上启用
22D3201609120000002212.0012.00¥12.002016-09-122016-09-12星期一, 九月 12日 2016, 8:00:00 早上禁用
33263X201608300000002521100.0021,100.00¥21,100.002016-08-302016-08-30星期二, 八月 30日 2016, 8:00:00 早上启用
显示源代码

#本地搜索

主键单据编号单据类型金额单据日期启用性别组织
11263X2016111400000081会议费借款单2.002016-11-14true
22D32016091200000022付款单12.002016-09-12false
33263X2016083000000025差旅费借款单100.002016-08-30true
显示源代码

#表格样式

沿用bootstrap的样式,具体参照Striped rows

通过添加bordered为表格和其中的每个单元格增加边框。

通过添加striped可以给表体之内的每一行增加斑马条纹样式。

通过添加condensed可以让表格更加紧凑,单元格中的内补(padding)均会减半。

通过添加hover可以让表体中的每一行对鼠标悬停状态作出响应

主键单据编号单据类型金额单据日期启用性别组织
11263X2016111400000081会议费借款单2.002016-11-14true
22D32016091200000022付款单12.002016-09-12false
33263X2016083000000025差旅费借款单100.002016-08-30true
显示源代码

#演示空值

演示传入空值

第一行所有列都没有数据,比如{}

第二行所有列都是undefined,比如{"name": undefined, "code": undefined}

第三行所有列都是null,比如{"name": undefined, "code": undefined}

主键单据编号单据类型金额单据日期启用性别组织
显示源代码

#Mouse click events

The event handlers below are all triggered by events in the bubbling phase. This means onCellClick will be called before onCellClick, because onCellClick is registered on td tag and onCellClick is registered on tr tag.

IDNote IDMoney
11263X20161114000000812.00
22D320160912000000002212.00
33263X2016083000000025100.00
显示源代码

#属性

名称类型默认值描述
activePage
number

当前页面号

bordered
boolean
false

直接映射ReactBootstrap的属性 http://getbootstrap.com/css/#tables-bordered

columnsModel required
array<> | object

表格模型,表头每一列的名称和类型,比如:

{
  id: 'code',
  type: 'string',
  label: '编码'
}

隐藏列

{
  hidden: true
}

自定义格式化

formatter: {
  type: 'custom',
  callback: value => `前缀_${value}_后缀`
}
condensed
boolean
false

直接映射ReactBootstrap的属性 http://getbootstrap.com/css/#tables-condensed

hover
boolean
false

直接映射ReactBootstrap的属性 http://getbootstrap.com/css/#tables-hover-rows

localSearch
boolean

是否显示搜索框

notDataText
string | element
'暂无数据'

数据为空数组时 [] ,暂无数据

onCellChecked
function

选择一个单元格

onCellClick
function

A callback fired when the table cell is clicked.

function (
  SyntheticEvent event,
  number colIdx,
  Object columnModel,
  number rowIdx,
  Object rowObj
)
(event: Object, colIdx: number, columnModel: Object, rowIdx: number, rowObj: Object) => any
onCellDoubleClick
function

单元格双击事件

function (
  SyntheticEvent event,
  number colIdx,
  Object columnModel,
  number rowIdx,
  Object rowObj
)
onPagination
function

分页

onRowClick
function

行单击事件

onRowDoubleClick
function

行双击事件

onSearchChange
function

当搜索框内容改变的时候

operationColumn
object
null

每一行是否显示操作按钮列 默认的操作按钮在最右侧的列中,如果需要指定在左侧,可以通过 align参数来设置

{
  align: 'left',
  className: 'operation',
  text: '操作'
}

注意:当操作列和选择列同时存在的时候,选择列会显示在操作列的左侧

operationColumnClass
elementType
'td'

自定义的操作列组件 除非指定了operationColumn参数,否则操作列不会显示出来

paging
boolean
false

是否显示分页

rowClassName
array<string>
[]

行类名,比如

['first-row-class', 'second-row-class']
selectRow
object
null

是否启用行选择,复选框/单选框 默认为null,不显示

{
  mode: 'checkbox',
  onBeforeSelect: () => (),
  onSelect: () => (),
  onSelectAll: () => ()
}

mode选项

checkbox复选,radio单选

onBeforeSelect()回调

当单行的复选框/单选框的值发生改变的时候触发,如果函数返回非true, 则不执行状态修改,也就是UI上复选框/单选框的选择状态不发生改变,也不执行onSelect() 回调。 参数:

  • [Number] rowIdx 行index
  • [Object] rowObj 行数据
  • [boolean] isSelected 复选框/单选框选中状态true/false
  • [Event] event Event对象
  • [Array] selectedRowsObj 当前被选中的行的数据,比如:
    [ { id: '11', name: 'test11', note: 'foo' },
      { id: '22', name: 'test22', note: 'bar' } ]
    

    onSelect()回调

    当单行的复选框/单选框的值发生改变的时候触发 参数同onBeforeSelect()回调

onSelectAll()回调

function onSelectAll(
  Object tableData, // 所有行的数据
  boolean isSelected, // 复选框/单选框选中状态true/false
  Event event, // Event对象
)

当点击表头复选框值发生改变的时候触发, 当行被选中的时候,组件会自动往被选中的行添加selected类名

striped
boolean
false

直接映射ReactBootstrap的属性 http://getbootstrap.com/css/#tables-striped

tableClassName
string
''

表格内部样式名

tableData required
array<> | object

表格填充数据 type: boolean,数据类型是 boolean literal或者是 Boolean类型 (注意和Boolean全局对象区分) type: ref,参照的值比较特殊,是一个object:

pk_org: {
  id: '22EA0EB9-FABA-4224-B290-5D041A1DF773',
  code: '0403',
  name: '委外部'
}
totalPage
number

页面数量

#简单表单

使用formDefaultData参数可以往表单中传入数据。

导入方法:import { Form } from 'ssc-grid'

显示源代码

#Form validation

No description.

显示源代码

No description.

显示源代码

Call submit() from ref, will show validation state on form controls, then if successing in validation, will call onSubmit() callback.

显示源代码

#参照

带有参照的表单

当过参照对应的值是null则会fallback到普通文本框

Please select
显示源代码

#自定义类型的字段

演示了“文本框”、“下拉菜单”和“参照”三种自定义类型的字段。

通过下拉菜单可以设置参照的refCode参数,从而显示不同的参照。

显示源代码

#隐藏字段

使用hidden: true参数可以将字段设置为隐藏。

隐藏字段不仅仅不显示在UI上,同样不会被渲染到DOM中,只会存在于Form组件的state中

显示源代码

#自定义布局

通过layout属性来自定义布局

显示源代码

#禁用表单字段

通过fieldModel.disabled属性来禁用对应字段

显示源代码

#属性

名称类型默认值描述
cancelLabel
string

取消按钮文本
默认值:取消

defaultData
object

填充表单值
时间类型比较特殊,请先转成 ISO 8601格式的字符串 之后,再传进来。

defaultData = {
  date: new Date('2017-02-14').toISOString()
}
fieldsModel required
array<object> | object

表单中的数据 fieldsModel数据举例:

[
  {
    type: 'string',
    id: 'formValidationEmail',
    label: '邮箱地址',
    validators: [
      {type: 'email'}
    ]
  },
  {
   type: 'custom',
   component: <CustomComponent>
  }
]

schema为

fieldsModel = [ fieldModel, fieldModel, ... ];

type字段

字段类型type:

  • 0 string 字符类型
  • 1 double 数值类型
  • 3 date 日期类型
  • 4 boolean 布尔类型
  • 5 ref 参照类型
  • 6 enum 枚举型
  • custom 自定义类型

string字符型

{
  type: 'string',
  id: 'formValidationEmail',
  label: '邮箱地址',
  validators: [
    { type: 'email' }
  ]
}
  • date日期类型

    字段定义举例:
    {
    type: 'date',
    dateConfig: {
      locale: 'en_US',
      todayButton:'Today'
    }
    

custom 自定义类型

{
   type: 'custom',
   component: <CustomComponent>
}

对于自定义类型,需要调用者传入一个组件,表单在回调该组件的时候,传入如下属性:

propTypes: {
  customFieldModel: PropTypes.object,
  customFieldValue: PropTypes.string,
  onCustomFieldChange: PropTypes.func,
}

enum枚举型

{
  type: 'enum',
  id: 'accountProperty',
  label: '账户性质',
  data: [
    { key: 'BASE', value: '基本' },
    { key: 'NORMAL', value: '一般' },
    { key: 'TEMPORARY', value: '临时' },
    { key: 'SPECIAL', value: '专用' },
  ],
}

ref参照型

字段定义举例:

{
  type: 'ref',
  referConfig: {
    referConditions: {
      refCode: 'org',
      refType: 'tree',
      rootName: '组织'
    },
    referDataUrl: 'http://172.20.4.220/ficloud/refbase_ctr/queryRefJSON',
    renderMenuItemChildren: (option, props, index) => ([
      <div>{option.code + ' ' + option.name}</div>
    ])
    labelKey: 'name',
    referExtend: {
           showDisabledBtnText: 'Display Disabled',
           showDisabledBtnText_Not: 'Hide Disabled'
         },
  },
  multiple:false
}

所有referConfig下的属性直接向下传递给Refers组件, 比如referConfig = { foo: 'bar' },那么就相当于

<Refers
  foo="bar"
/>

关于Refers组件的属性定义,详见ssc-refer

validators字段

校验类型,比如

validators: [
  { type: 'required' },
  { type: 'length', min: 3, max: 6,
    helpText: '字符串长度应该大于等于3小于等于6' }
]

schema为:

validators = [ validator, validator, ... ];

type字段支持如下类型:

  • email 邮件地址
  • decimal 数字,比如0.1, .3, 1.1, 1.00003, 4.0
  • int 整数
  • mobilePhone 手机号
  • custom 自定义格式

helpText字段是错误提示。如果不提供,则使用默认错误提示。 如果是自定义类型,则通过matchFunc参数传递校验函数

{
  type: 'custom',
  helpText: value => '请输入正确的XX格式',
  matchFunc: value => {}
}

matchFunc返回值为true的时候,认为校验通过 对于自定义类型,如果不提供helpText,则默认不显示错误提示。

disabled字段

当值为true的时候禁用该字段,其他值都是不禁用该字段。

layout
object

自定义布局(bootstrap列布局) 具体参照:https://react-bootstrap.github.io/components.html#grid-props-col

[
  ['id', 'name', 'code'],
  ['src_system']
]
okLabel
string

确定按钮文本
默认值:完成

onChange
function

当控件的值发生改变的时候触发

  • 参数1 {String} fieldId 也就是传入组件中fieldsModel中的id
  • 参数2 {String} value 改变之后的值
  • 参数3 {Object} opt 可选参数,当type为string/boolean/enum等简单类型的时候,可以
          通过opt.event获取Event对象。<br>
          当type为date类型的时候,可以通过opt.formattedValue获取格式化
          之后的时间值。<br>
    
onReset
function

当点击“重置”按钮的时候

onSubmit
function

当表单被提交的时候触发
当用户使用了自定义提交按钮的时候不会调用该回调
参数1. formData, 整个表单中所有控件的值,是一个JSON对象,结构和传入参数 defaultData保持一致。

showSubmitButton
boolean
true

是否显示提交按钮

#简单输入框

导入方法:import { TextField } from 'ssc-grid'

#属性

名称类型默认值描述
disabled
boolean

是否禁用输入框

onBlur
function

当光标离开输入框

onChange
function

当文本框内容被修改时候调用

onFocus
function

当文本框被聚焦

onKeyDown
function
placeholder
string

文本框占位字符

value
string | number
''

文本框中显示的值 TODO value应该改为defaultValue,类似于默认的input组件区分valuedefaultValue一样,使用defaultValue说明该组件是uncontrolled

#简单DatePicker

导入方法:import { DatePicker } from 'ssc-grid'

#属性

名称类型默认值描述
dateFormat
string
'YYYY-MM-DD'

日期格式,支持如下集中格式

'MM/DD/YYYY', 'DD/MM/YYYY', 'YYYY/MM/DD', 'DD-MM-YYYY'
id
string
onChange
function
value
string

value

#简单DatePicker2

DatePicker2组件是对react-datepicker的封装, 如果您对本封装不满意,可以直接使用react-datepicker组件。

导入方法:import { DatePicker2 } from 'ssc-grid'

#DatePicker2格式化

请使用Moment.js提供的格式化方法,参照Moment.js文档

#属性

名称类型默认值描述
calendarClassName
string
className
string
dateFormat
string
'YYYY-MM-DD'

日期格式
遵循moment.js格式
Moment.js文档

disabled
boolean
isClearable
boolean
locale
string
'zh-CN'
onChange
function

参数:

  • value {String}: ISO 8061格式时间字符串
  • formattedValue {String}: 按照用户指定格式进行了格式化后的字符串
  • momentDate {Object}: moment.js对象
showMonthDropdown
boolean
showYearDropdown
boolean
todayButton
string
value
string

value 请使用ISO 8061格式

#简单MonthPicker

导入方法:import { MonthPicker } from 'ssc-grid'

显示源代码

#属性

名称类型默认值描述
monthFormat
string
'YYYY-MM'

日期格式 请参照Moment.js文档中的日期格式 比如:

YYYY年MM月
onChange
function

参数

  • value {String} 年月字符串,比如2017-02
  • formattedValue {String} 按照用户要求进行格式化之后的字符串,比如2017年02月
value
string
null

月份 格式:2017-02

#简单YearPicker

导入方法:import { YearPicker } from 'ssc-grid'

20002001200220032004
20052006200720082009
20102011201220132014
20152016201720182019
2020
显示源代码

#属性

名称类型默认值描述
onChange
function

参数

  • value 年月字符串,比如"2017"
  • formattedValue 按照用户要求进行格式化之后的字符串,比如"2017年"
value
string
null

年 格式:2017

yearFormat
string
'YYYY'

日期格式 请参照Moment.js文档中的日期格式 比如:

YYYY年MM月

#简单树

导入方法:import { Tree } from 'ssc-grid'

  • 0-0-label
    • 0-0-0-label
      • 0-0-0-0-label
      • 0-0-0-1-label
      • 0-0-0-2-label
    • 0-0-1-label
      • 0-0-1-0-label
      • 0-0-1-1-label
      • 0-0-1-2-label
    • 0-0-2-label
  • 0-1-label
    • 0-1-0-label
      • 0-1-0-0-label
      • 0-1-0-1-label
      • 0-1-0-2-label
    • 0-1-1-label
      • 0-1-1-0-label
      • 0-1-1-1-label
      • 0-1-1-2-label
    • 0-1-2-label
  • 0-2-label
显示源代码

#属性

名称类型默认值描述
treeData required
array<>

生成树所需要的JSON数据

[
  {
    "title": "0-0-label",
    "key": "0-0-key",
    "children": [
      {
        "title": "0-0-0-label",
        "key": "0-0-0-key"
      }
    ]
  }
]

#简单下拉菜单

导入方法:import { Dropdown } from 'ssc-grid'

#属性

名称类型默认值描述
data required
array<>

填充下拉菜单的数据

[
  {id: 'zh_CN', name: '简体中文'},
  {id: 'en_US', name: '英文美国'}
]
defaultTitle required
string
dropdownId required
string
onSelect
function

当从下拉菜单选择一项的时候

#输入框校验

通过指定validators属性,<ValidateInput>组件支持如下内置校验类型:

  • currency: 货币
  • decimal: 数字
  • email: 电子邮件地址
  • int: 整数
  • length: 字符长度
  • mobilePhone: 手机号
  • required: 必输项

通过指定参数type: 'email'来指定校验类型为Email地址

[
  {
    type: 'email',
  }
]

使用内置校验类型,默认的提示信息也是内置的。如果需要自定义提示信息,可以使用helpText

比如对字符长度做校验

[
  {
    type: 'length',
    options: { min: 3, max: 6 },
    helpText: (value, validator) =>
      '自定义提示:' +
      '您输入的邮件地址是:${value},' +
      '请确保邮件地址长度在${validatos.options.min}和${validatos.options.max}之间',
  }
]

validators属性的类型是数组,也就是支持多重校验

比如校验email类型,并且字符长度在3到6范围内

[
  {
    type: 'email',
  },
  {
    type: 'length',
    options: { min: 3, max: 6 },
  },
]

通过指定type: 'custom'还可以使用自定义校验,然后提供校验函数

[
  {
    type: 'custom',
    matchFunc: value => value.length > 5,
    helpText: (value, validator) =>
      '自定义提示:' +
      '您输入的文字是:${value},字符长度必须大于5',
  }
]

演示内置校验类型

验证货币格式

验证数字格式

验证邮箱格式

验证整数格式

验证手机号

演示内置校验类型的自定义提示文字

验证邮箱格式,使用自定义错误提示

演示自定义校验类型

自定义验证格式,使用自定义错误提示

显示源代码

#属性

名称类型默认值描述
controlId
string

To ensure accessibility, set controlId on https://react-bootstrap.github.io/components.html#forms

disabled
boolean

是否禁用输入框

onBlur
function

当光标离开输入框

onChange
function

当文本框内容被修改时候调用

onFocus
function

当文本框被聚焦

placeholder
string

文本框占位字符

validators required
array<object | object | object>
[]

带有校验功能的输入框 场景1:使用内置校验(定义在src/utils/validation.js) 比如email为校验邮件地址格式

{
  type: 'email'
}

type可以是:

  • currency 货币金额格式
  • decimal 十进制数字格式
  • email 电子邮件格式
  • int 整数类型
  • length 输入文本的长度
  • mobilePhone 手机号码格式,比如18911112222
  • required 必输字段 场景2:使用自定义校验 比如校验用户输入数字的范围
    {
    type: 'custom',
    matchFunc: (value, validator) => parseInt(value, 10) <= 100 && parseInt(value, 10) >= 0,
    helpText: (value, validator) => '残值率不能大于100%,小于0%'
    }
    
    回调函数matchFunc(string, Object) => boolean用于对文本框中的文字进行校验,返回false则校验失败,显示helpText定义的错误信息 回调函数helpText(string, Object) => string用于显示校验错误时候的错误提示信息
value
string
''

文本框中显示的值 注意:由于文本框是完全自由输入的,所以value的类型,以及在matchFunc回调函数的value参数的类型 都是string,具体参照https://developer.mozilla.org/en/docs/Web/API/HTMLInputElement 文档中关于value属性的定义

#参照校验

通过指定validators属性,<ValidateInput>组件支持如下内置校验类型:

  • required: 必输项

通过指定参数type: 'required'来指定校验类型为必输项

[
  {
    type: 'required',
  }
]

使用内置校验类型,默认的提示信息也是内置的。如果需要自定义提示信息,可以使用helpText

比如对字符长度做校验

[
  {
    type: 'required',
    helpText: (value, validator) =>
    '自定义提示:' +
    '您输入的内容是:${value},',
  }
]

通过指定type: 'custom'还可以使用自定义校验,然后提供校验函数

[
  {
    type: 'custom',
    matchFunc: value => value.length > 5,
    helpText: (value, validator) =>
    '自定义提示:' +
    '您输入的文字是:${value},字符长度必须大于5',
  }
]

演示内置校验类型

验证必选字段

显示源代码

#属性

名称类型默认值描述
controlId
string

To ensure accessibility, set controlId on https://react-bootstrap.github.io/components.html#forms

disabled
boolean

是否禁用输入框

labelKey
string

请参照参照文档https://ssc-refer.github.io/

multiple
boolean

是否多选

onBlur
function

当光标离开输入框

onChange
function

当文本框内容被修改时候调用

onFocus
function

当文本框被聚焦

placeholder
string

文本框占位字符

referConditions required
object

参照配置参数

referConfig = {
  referConditions: {"refCode":"dept","refType":"tree","rootName":"部门"};
}
referDataUrl required
string
renderMenuItemChildren
function

自定义参照下拉列表

selected required
array<object>
[]

参照初始值

validators
array<object>
[]

带有校验功能的输入框

#输入框校验

缺省值
给定初始值
必选项
数值长度校验
显示源代码

#属性

名称类型默认值描述
controlId
string

To ensure accessibility, set controlId on https://react-bootstrap.github.io/components.html#forms

disabled
boolean

是否禁用输入框

errorMsg
string
'请填写数字!'

校验错误时候提示信息

max
number
null
min
number
null
nullMsg
string
'不能为空!'

当文本框为空的显示的提示信息

onBlur
function

当光标离开输入框

onChange
function

当文本框内容被修改时候调用

onFocus
function

当文本框被聚焦

placeholder
string

文本框占位字符

required
boolean
false

Required field

value
string
''

文本框中显示的值 注意:由于文本框是完全自由输入的,所以value的类型,以及在matchFunc回调函数的value参数的类型 都是string,具体参照https://developer.mozilla.org/en/docs/Web/API/HTMLInputElement 文档中关于value属性的定义