# dataSource标签

数据源组件

```xml
<h:dataSource id="gridDataSource" batch="true" pageSize="10" serverPaging="true" error="requestError"> 
  <h:transport parameterMap="parameterMap"> 
    <h:read url="${base.contextPath}/sys/resource/query" type="POST" dataType="json"/>  
    <h:create url="${base.contextPath}/sys/resource/submit" type="POST" contentType="application/json"/>  
    <h:update url="${base.contextPath}/sys/resource/submit" type="POST" contentType="application/json"/>  
    <h:destroy url="${base.contextPath}/sys/resource/remove" type="POST" contentType="application/json"/> 
  </h:transport>  
  <h:schema data="rows" total="total" errors="schemaError"> 
    <h:model id="resourceId" editable="dsEditable"> 
      <h:fields> 
        <h:item name="loginRequire" defaultValue="Y" type="boolean" checkedValue="Y" uncheckedValue="N"/>  
        <h:item name="accessCheck" defaultValue="Y" type="boolean" checkedValue="Y" uncheckedValue="N"/>  
        <h:item name="type" defaultValue=""/>  
        <h:item name="url"> 
          <h:validation required="true"/> 
        </h:item>  
        <h:item name="name"> 
          <h:validation required="true"/> 
        </h:item> 
      </h:fields> 
    </h:model> 
  </h:schema> 
</h:dataSource>
```

### **主要属性**

| 属性名 | 类型 | 描述 |
| :--- | :--- | :--- |
| data | Array & String | 数据源 |
| autoSync | Boolean | 自动同步 |
| batch | Boolean | 批处理 |
| page | Integer | 每页显示大小 |
| pageSize | Integer | 提供每页显示的大小选择 |
| serverAggregates | Boolean | 为true数据源将聚合远程计算 |
| serverFiltering | Boolean | 为true将过滤远程数据 |
| serverGrouping | Boolean | 为true将远程数据分组 |
| serverPaging | Boolean | 为true将远程数据分页 |
| serverSorting | Boolean | 为true将远程数据排序 |
| type | String | 类型 |
| change | Function | 改变事件 |
| error | Function | 错误事件 |
| push | Function | 接受数据源推送式通知 |
| requestEnd | Function | 请求结束调用事件 |
| requestStart | Function | 请求开始时调用事件 |
| sync | Function | 自动同步改变的数据 |

> **提示:** 属性用法请参考kendoui API文档 [http://docs.telerik.com/kendo-ui/api/javascript/data/datasource](http://docs.telerik.com/kendo-ui/api/javascript/data/datasource)

### **主要子节点**

* transport
* schema
* sort

### **transport**

服务端交互配置

#### **transport属性**

| 属性名 | 类型 | 描述 |
| :--- | :--- | :--- |
| parameterMap | Function | 将请求数据改为远程接受的数据格式 |
| push | Function | 数据初始化时设置为推送式通知 |

```xml
<h:dataSource id="gridDataSource" > 
  <h:transport parameterMap="parameterMap"> 
    ...
  </h:transport>
</h:dataSource>
```

#### **transport子节点**

主要有以下几种节点类型

* read
* create
* update
* destroy

| 属性名 | 类型 | 描述 |
| :--- | :--- | :--- |
| cache | Boolean | 设置为true将数据缓存住 |
| contentType | String | 发送到服务器的内容的http的头 |
| data | Object \| Function | 发送到远程服务的附加参数 |
| dataType | String | 服务器期望的返回类型 |
| type | String | 请求类型 |
| url | String \| Function | 请求地址 |

```xml
  <h:transport parameterMap="parameterMap"> 
    <h:read url="${base.contextPath}/sys/resource/query" type="POST" dataType="json"/>  
    <h:create url="${base.contextPath}/sys/resource/submit" type="POST" contentType="application/json"/>  
    <h:update url="${base.contextPath}/sys/resource/submit" type="POST" contentType="application/json"/>  
    <h:destroy url="${base.contextPath}/sys/resource/remove" type="POST" contentType="application/json"/> 
  </h:transport>
```

### **schema**

定义datasource的数据结构

#### **schema属性**

| 属性名 | 类型 | 描述 |
| :--- | :--- | :--- |
| data | String \| Function | 包含数据项的服务器的相应字段 |
| errors | String \| Function | 包含服务器端的错误的数据 |
| groups | String \| Function | 包含组的服务器端数据 |
| parse | Function | 预处理解析服务器响应 |
| total | String \| Function | 数据项的总数 |
| type | String | 相应类型支持XML和JSON |

```xml
<h:dataSource id="gridDataSource" > 
  <h:schema data="rows" total="total" errors="schemaError">  
    ...
  </h:schema>
</h:dataSource>
```

#### **schema子节点**

* model

| 属性名 | 类型 | 描述 |
| :--- | :--- | :--- |
| id | String | 唯一标识 |
| editable | Function | 设置是否可编辑 |

```xml
<h:schema data="rows" total="total" errors="schemaError"> 
    <h:model id="resourceId" editable="dsEditable"> 
      <h:fields> 
         ... 
      </h:fields> 
    </h:model> 
  </h:schema>
```

#### **model子节点**

* field

| 属性名 | 类型 | 描述 |
| :--- | :--- | :--- |
| name | String | 名字 |
| defaultValue | Object | 默认值 |
| editable | Boolean | 是否可编辑 |
| nullable | Boolean |  |
| parse | Function | 设为推送式 |
| type | String | 类型 |
| from | String |  |
| checkedValue | String | 为true设为选中 |
| uncheckedValue | String | 为true设为没选中 |

```xml
<h:schema data="rows" total="total" errors="schemaError"> 
    <h:model id="resourceId" editable="dsEditable"> 
      <h:fields> 
        <h:item name="loginRequire" defaultValue="Y" type="boolean" checkedValue="Y" uncheckedValue="N"/>  
        <h:item name="accessCheck" defaultValue="Y" type="boolean" checkedValue="Y" uncheckedValue="N"/>  
        <h:item name="type" defaultValue=""/>  
        <h:item name="url"> 
          <h:validation required="true"/> 
        </h:item>  
        <h:item name="name"> 
          <h:validation required="true"/> 
        </h:item> 
      </h:fields> 
    </h:model> 
  </h:schema>
```

#### **field子节点**

* validation

| 属性名 | 类型 | 描述 |
| :--- | :--- | :--- |
| required | Boolean | 设为必填 |
| max | Integer | 设最大 |
| min | Integer | 设最小 |

### **sort**

| 属性名 | 类型 | 描述 |
| :--- | :--- | :--- |
| dir | String | 分为升序或者降序 |
| field | String | 字段的id |
| compare | function | 比较事件 |

```xml
    <h:dataSource id="gridDataSource" batch="true" pageSize="10" serverPaging="true" serverSorting="true" error="requestError">
      <h:transport parameterMap="parameterMap">
        ...
      </h:transport>
      <h:schema data="rows" total="total" errors="schemaError">
        <h:model id="resourceId" editable="dsEditable">
           <h:fields>
               ...
           </h:fields>
        </h:model>        
      </h:schema>
      <h:sort>
            <h:item field="url" dir="desc"/>
      </h:sort>
    </h:dataSource>
```