zoukankan      html  css  js  c++  java
  • SelectPage动态下拉

    转自:https://doc.fastadmin.net/doc/178.html

    动态下拉(SelectPage)

    最后更新时间:2021-03-05 15:51:55

    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="你要显示的字段"即可,例如data-field="title"

    FastAdmin的Selectpage列表中主键字段默认读取的是id字段,如果我们的主键不是id字段,则我们可以添加并使用data-primary-key="你的主键ID字段"来修改,例如data-primary-key="productid"

    常用属性

    Selectpage所支持的扩展属性

    属性功能示例
    data-source 提供数据源的URL地址或JSON数据 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"
    data-format-item 列表行模板 data-format-item="{title} - {author}"
    disabled 禁用SelectPage组件 disabled

    附加请求参数

    如果需要简单的进行搜索筛选过滤,可以使用

    //筛选status为normal,type为1的数据
    data-params='{"custom[status]":"normal","custom[type]":"1"}'

    data-params支持function类型,如果需要动态传参(例如联动查询),则可以在JS中将data-params添加一个function处理即可,请在表单初始化Form.api.bindevent之前使用,例如传递动态选择的类型

    $("#c-name").data("params", function (obj) {
        return {custom: {type: $("#c-type").val()}};
    });

    自定义行模板

    SelectPagedata-format-item1.2.0之前的版本只支持使用JS赋值function来实现格式化模板功能,如:

    $("#c-category").data("format-item", function(row){
        return row.title + " - " + row.author;
    });

    从FastAdmin1.2.0版本开始,同时还支持占位符和模板,如:
    占位符模式

    <input type="text" ... data-format-item="{title} - {author}" />

    模板模式

    <input type="text" ... data-format-item="#titletpl" />
    
    <script type="text/html" id="titletpl">
    <%=title%> - <%=id%>
    </script>

    温馨提示:
    默认由于data-field="name"只能指定一个显示的字段,如果需要调用显示多个字段值时,必须在控制器指定

    protected $selectpageFields = "id,name,title,author";

    数据源

    data-source支持Object远程URL返回两种方式,如:

    data-source='[{"id":"1","title":"标题1"},{"id":"2","title":"标题2"}]'

    data-source="category/index"

    当使用远程数据源的方式时需要远程返回JSON数据,如:

    {
        "list":[{"id":4,"username":"FastAdmin","nickname":"极速后台","avatar":"","pid":0},{"id":6,"username":"CRUD","nickname":"一键CRUD","avatar":"","pid":0}],
        "total":30
    }

    其中list为数据列表,total为总记录数,总记录数将用于前端显示分页使用。

    事件监听

    如果你需要对SelectPage组件值变更以后的事件进行监听,可以直接监听文本框的change事件即可,如:

    $(document).on("change", "#c-title", function(){
        //后续操作
    });

    也可使用

    $("#c-title").data("eSelect", function(){
        //后续操作
    });

    来实现,注意以上代码需要放在元素初始化Form.api.bindevent之前。

    常见问题

    1、FastAdmin在生成CRUD时会对包含下划线的字段默认生成动态下拉列表,比如user_id将自动生成data-source="user/index",默认读取的是idname字段,如果需要修改,请修改对应参数data-primary-keydata-field来重新赋值。
    2、如果你在开发时遇到SelectPage组件在编辑时总是返回第一行或所有行的数据时,请参考以下文档进行检查你的代码:
    https://ask.fastadmin.net/article/2399.html
    https://ask.fastadmin.net/article/2400.html

    更多的使用方法请参考Selectpage官方教程

  • 相关阅读:
    Electio Time poj
    排列的字典序问题
    poj 2365
    编程中的命名设计那点事(转)
    编程命名中的7+1个提示(转)
    poj 1664 放苹果——递归
    再论字典序
    poj 3618
    sort用法
    poj 1088
  • 原文地址:https://www.cnblogs.com/apolloren/p/14775242.html
Copyright © 2011-2022 走看看