# 動態下拉
FastAdmin中的動態下拉列表使用的是優秀強大的`Selectpage`插件來支持,FastAdmin對其進行了二次開發。
下面介紹一個最基礎的動態下拉列表示例,如下
```
<input id="c-name" data-rule="required" data-source="category/selectpage" class="form-control selectpage" name="row[name]" type="text" value="">
```
其中需要給元素class添加一個`selectpage`,其次需要增加一個`data-source="category/selectpage"`這個屬性,`category/selectpage`為我們控制器提交列表的方法
FastAdmin的Selectpage列表中`顯示字段`默認讀取的是`name`字段,如果我們返回的列表中不包含`name`字段,將無法展現下拉列表數據。此時我們需要添加使用`data-field="你要顯示的字段"`即可。
FastAdmin的Selectpage列表中`主鍵字段`默認讀取的是`id`字段,如果我們的主鍵不是`id`字段,則我們可以添加并使用`data-primary-key="你的主鍵ID字段"`來修改。
Selectpage所支持的擴展屬性
| 屬性 | 功能 | 示例 |
| --- | --- | --- |
| data-source | 提供數據源的URL地址 | data-source="category/index" |
| data-field | 列表顯示讀取的字段 | data-field="username" |
| data-primary-key | 列表選中后渲染的字段 | data-primary-key="uid" |
| data-pagination | 是否開啟分頁 | data-pagination="true" |
| data-page-size | 分頁大小 | data-page-size="10" |
| data-multiple | 是否支持多選 | data-multiple="true" |
| data-max-select-limit | 最多可選擇數量 | data-max-select-limit="3" |
| data-order-by | 排序字段 | data-order-by="id" |
| data-params | 自定義擴展參數 | data-params='{"custom\[type\]":"test"}' |
| data-select-only | 是否為只讀模式 | data-select-only="true" |
Selectpage的`data-params`支持`function`類型,如果需要動態傳參(例如聯動查詢),則可以在JS中將`data-params`添加一個function處理即可
FastAdmin在生成CRUD時會對包含下劃線的字段默認生成動態下拉列表,比如`user_id`將自動生成`data-source="user/index"`
默認讀取的是`id`和`name`字段,如果需要修改,請參考上方的參數修改方法。
data-params自定義擴展參數支持使用function動態返回數據,請在表單初始化之前使用,例如傳遞動態選擇的類型
```
$("#c-name").data("params", function (obj) {
return {custom: {type: $("#c-type").val()}};
});
```
# **普通下拉**
在FastAdmin中集成了`Bootstrap-select`插件,可以對原有的`select`元素重新渲染,并增加相應的功能。
我們可以直接給`select`元素添加一個class為`selectpicker`的值即可,FastAdmin在檢測到以后會自動進行渲染,我們同時可以給`select`添加以下屬性用于配置`selectpicker`
| 屬性 | 介紹 | 添加位置 | 示例 |
| --- | --- | --- | --- |
| data-live-search | 是否啟用動態搜索 | select | data-live-search="true" |
| data-tokens | 添加搜索的關鍵字 | option | data-tokens="keyword keyword2" |
| data-max-options | 最大可選擇option的數量 | select或optgroup | data-max-options="2" |
| title | 自定義默認提示語 | select | title="請選擇相應的分類" |
| title | 自定義選中以后顯示的文字 | option | title="分類1" |
| data-style | 定義樣式 | select | data-style="btn-primary" |
> 更多的使用方法請參考:[Selectpicker官方教程](https://silviomoreto.github.io/bootstrap-select/)