精华内容
下载资源
问答
  • Datagridview表头筛选.rar

    2020-12-15 20:25:20
    Datagridview表头筛选,可实现类似excel筛选功能
  • Datagridview表头筛选.zip

    2019-10-08 14:33:39
    c#DOME 源码工具 备注操作方法及流程,可实现类似EXCEL文件筛选功能,可扩展性强。
  • Bootstrap-table 表头筛选控件

    千次阅读 2020-11-18 14:23:29
    Bootstrap-table 表头筛选控件,根据Bootstrap-table API,表头添加筛选排序,支持文本搜索,数值搜索,日期搜索,单选和复选。 依赖js jQuery,Bootstrap,Bootstrap-table,select2 筛选类型说明 1. 文本类型...

    Bootstrap-table 表头筛选控件,根据Bootstrap-table API,在表头添加筛选排序,支持文本搜索,数值搜索,日期搜索,单选和复选。

    依赖js jQuery,Bootstrap,Bootstrap-table,select2

    筛选类型说明

    1. 文本类型(text)

    提供模糊搜索功能,根据输入的参数模糊匹配返回对应的结果

    2. 数值类型(num)

    提供区间搜索功能,所搜列必须为数值,可以搜索最小值和最大值之间的结果,也可以搜索所有大于最小值或小于最大值的结果。

    3. 日期类型(date)

    提供区间搜索日期功能,使用方法同数值类型。

    4. 单选(radio)

    如图所示,根据所选项筛选出对应的结果。

    5. 复选(checkbox)

    与单选功能相同,但可以搜索多个选项。

    参数说明

    表格参数默认值说明
    data-advanced-sortablefalse默认false。设为true开启控件功能
    列参数默认值说明
    data-sortablefalse默认false。设为true开启排序功能,bootstrap-advanced-sortable.js控件开启后会覆盖bootstrap-table默认的筛选功能
    data-search-type-可选参数,设置开启搜索功能。可选值:text,num,date,radio,checkbox。
    data-search-select-传值参数,只有当搜索类型设为radio和checkbox时才生效,要求输入数组类型。样例:data-search-select=["选项1","选项2","选项3"]

    服务端分页传参说明

    1.客户端分页

    sidePagination设为"client"时为客户端分页,只要把相应的数据以JSON格式传到前端即可,由前端JS来实现排序,搜索功能。

    2.服务端分页

    sidePagination设为"server"时为服务端分页,这时需要与服务端交互才能实现排序,搜索功能。
    当选择服务器分页时,客户端会向服务端传输五个参数:

    • limit : Int类型,页面展示数据条数;
    • offest : Int类型,当前页起始行数;
    • order : String类型,排序方式,asc:顺序,desc逆序;
    • search : Option[String]类型,默认为空值。进行搜索时,会传输JSON字符串回服务端,样例:

                    {"id":{"field":"id","searchType":"text","data":"100"},"name":{"field":"name","searchType":"text","data":"200"}}

                    有四个参数,服务端解析这个json字符串获取相应的结果,然后截取offest - offest+limit 之间的数据传输的客户端进行展示;

    • sort : Option[String]类型,以sort列进行排序,默认为空值。

    示例代码(Scala):

    case class PageData(limit: Int, offset: Int, order: String, search: Option[String], sort: Option[String])
    
      val pageForm: Form[PageData] = Form(
        mapping(
          "limit" -> number,
          "offset" -> number,
          "order" -> text,
          "search" -> optional(text),
          "sort" -> optional(text)
        )(PageData.apply)(PageData.unapply)
      )
    
    def dealMapDataByPage(page: PageData) = {
        val searchX = page.search match {
          case None => 获取初始数据代码
          case Some(y) => 筛选数据代码
        }
        val sortX = page.sort match {
          case None => searchX
          case Some(y) => 以列进行排序
        }
        val orderX = page.order match {
          case "asc" => sortX
          case "desc" => sortX.reverse
        }
        //返回值
        orderX
      }

    前端JS代码:

     $('#table').bootstrapTable({
                        method: 'post',
                        url: "/getData",
                        sidePagination: "server",
                        contentType: "application/x-www-form-urlencoded",
                        columns:[{
                            field:"testText",
                            title:"TestText",
                            sortable:"true",
                            searchType:"text"
                        },{
                            field:"testRadio",
                            title:"TestRadio",
                            sortable:"true",
                            searchType:"radio",
                            searchSelect:["test1","test2","test3"]
                        }]
        

     

    github链接:https://github.com/Westsyan/bootstrap-advanced-sortable

     

    展开全文
  • DataGridView 表头添加筛选功能,类似Excel列筛选功能 VS2013 创建项目
  • 效果如下: 代码: 给需要筛选表头添加以下属性: :filter-multiple可以决定你是否选择多选,也就是可以选择多个选项进行筛选 :filter-multiple="false" :filter-method="filterTag" :filters="runArr" data中...

     效果如下:

     代码:

            <el-table :data="tableData" style="width: 100%">
              <el-table-column
                label="用户名"
                prop="operationUserName"
              ></el-table-column>
              <el-table-column
                label="具体操作"
                prop="operationType"
                align="center"
                column-key="tag"
                :filter-multiple="false"
                :filter-method="filterTag"
                :filters="runArr"
              >
              </el-table-column>
              <el-table-column
                label="操作时间"
                prop="operationTime"
                align="center"
                column-key="tag"
                :filter-multiple="false"
                :filter-method="filterTagTime"
                :filters="runArrTime"
              ></el-table-column>
            </el-table>

    给需要筛选的表头添加以下属性:

    :filter-multiple可以决定你是否选择多选,也就是可以选择多个选项进行筛选

                :filter-multiple="false"
                :filter-method="filterTag"
                :filters="runArr"

     在data中定义过滤条件

          runArr: [
            { text: "录入电子文档", value: "录入电子文档" },
            { text: "查看", value: "查看" },
            { text: "更新信息", value: "更新信息" },
            { text: "下载", value: "下载" },
          ],

    在methods写入上面filter-method 绑定的过滤方法 filterTag:

    注意:函数里面的这个返回值就是返回你要展示的内容,我上面主要筛选的是具体操作,对应属性名是operationType,因此这里的返回值是 row.operationType,你们需要改成你们在表格中定义的要返回的属性名称。

        filterTag(value, row, column) {
          return row.operationType === value   //这个返回值就是返回你要展示的内容
        },
    展开全文
  • listview表头用combo进行筛选查询?怎么listview的表头增加筛选查询的功能?
  • DataGridView 表头下拉筛选

    热门讨论 2011-09-04 16:33:36
    DataGridViewAutoFilter.rar 表头区域增加下拉筛选,可多选。
  • iview的默认table组件不支持 表头输入框筛选,官方地址 此处默认您有了一定的vue开发基础。 套用iview官方的例子: //显示表格的例子 <template> <Table border :columns="columns7" :data="data6"><...

    效果图:

    iview的默认table组件不支持 表头输入框筛选,官方地址
    此处默认您有了一定的vue开发基础。
    套用iview官方的例子:

    //显示表格的例子
    <template>
      <Table border :columns="columns7" :data="data6"></Table>
    </template>
    <script>
    import { Table ,Button,Icon,Modal} from "iview";
    import Vue from "vue";
    export default {
      components: {
        Table
      },
      data() {
        return {
          columns7: [
            {
              title: "Name",
              key: "name",
              //使用render函数自定义列显示效果:文本加粗
              render: (h, params) => {
                return h("div", [//使用render渲染一个div标签
                  h(Icon, {//使用render渲染一个iview的组件
                    props: {//传递参数
                      type: "person"
                    }
                  }),
                  h("strong", params.row.name)//文字加粗
                ]);
              }
            },
            {
              title: "Age",
              key: "age"
            },
            {
              title: "Address",
              key: "address"
            },
            {
              title: "Action",
              key: "action",
              width: 150,
              align: "center",
              render: (h, params) => {
                return h("div", [//渲染一个div标签
                  h(
                    Button,//在div标签下渲染一个iview组件
                    {
                      props: {//传递参数
                        type: "primary",
                        size: "small"
                      },
                      style: {//设置样式
                        marginRight: "5px"
                      },
                      on: {//监听$emit事件
                        click: () => {
                          this.show(params.index);
                        }
                      }
                    },
                    "View"
                  ),
                  h(
                    Button,
                    {
                      props: {
                        type: "error",
                        size: "small"
                      },
                      on: {
                        click: () => {
                          this.remove(params.index);
                        }
                      }
                    },
                    "Delete"
                  )
                ]);
              }
            }
          ],
          data6: [
            {
              name: "John Brown",
              age: 18,
              address: "New York No. 1 Lake Park"
            },
            {
              name: "Jim Green",
              age: 24,
              address: "London No. 1 Lake Park"
            },
            {
              name: "Joe Black",
              age: 30,
              address: "Sydney No. 1 Lake Park"
            },
            {
              name: "Jon Snow",
              age: 26,
              address: "Ottawa No. 2 Lake Park"
            }
          ]
        };
      },
      methods: {
        show(index) {
          this.$Modal.info({
            title: "User Info",
            content: `Name:${this.data6[index].name}<br>Age:${
              this.data6[index].age
            }<br>Address:${this.data6[index].address}`
          });
        },
        remove(index) {
          this.data6.splice(index, 1);
        }
      },
    
      
    
      mounted(){
          //modal注入
          Vue.prototype.$Modal=Modal;
      }
      
    };
    </script>
    
    

    由于table组件表头筛选不支持输入框筛选,那么我们就必须的自己绘制。
    思路如下:

    • 找到表头所在的节点
    • 在表头节点后添加一个自定义筛选的div节点;
    • 使用render函数渲染一个下拉输入的单文件组件
     mounted(){
          //modal注入
          Vue.prototype.$Modal=Modal;
          //等dom元素渲染完成之后渲染筛选
          this.$nextTick(()=>{
            this.renderHeaderFilter();
          })
      }
    
    methods:{
     //添加头部筛选
        renderHeaderFilter(){
          let allHeader =document.querySelectorAll(".ivu-table-header .ivu-table-cell");
    console.log(allHeader);
    
          allHeader.forEach((element)=>{
            let createNew=document.createElement("div");
            createNew.classList.add("vue-header-filter");
            element.appendChild(createNew);
            new Vue({
              render(h){
                return h(TableHeaderFilter,{
                  props:{}
                })
              }
            }).$mount(createNew);
          })
        }
    }
    

    最后实现的效果为:

    此文源码案例:欢迎Star

    展开全文
  • 二、样例:如何给表格组件添加表头筛选 Vue 组件的开发有几种方式:单文件组件,使用 render 函数渲染,使用 template。 大多数的情况下,Vue 可以使用单文件/template 的方式来创建页面;然而有一些情况我们...

    此文源码案例:欢迎Star

    目录

    Vue 组件的开发有几种方式:单文件组件,使用 render 函数渲染,使用 template。

    在大多数的情况下,Vue 可以使用单文件/template 的方式来创建页面;然而在有一些情况我们需要使用 JavaScript 的编程能力,比如使用第三方框架时,想要自定义某个功能;这个时候就可以使用到 render 函数。

    本文将使用 iView table 为例,通过 render 函数添加可搜索的表头筛选。

    一、Render 函数参数详解

    //一个简单的例子:渲染一个p标签,内容为 '我是p标签的内容'
    new Vue({
      render: createElement => createElement("p", "我是p标签的内容")
    });
    

    其实 createElement()还有更强大的参数:

    // @returns {VNode}
    createElement(
      // {String | Object | Function}
      // 一个 HTML 标签字符串,组件选项对象,或者
      // 解析上述任何一种的一个 async 异步函数。必需参数。
      "div",
    
      // {Object}
      // 一个包含模板相关属性的数据对象,
      // 你可以在 template 中使用这些特性。可选参数。
      {
        // (详情见下一节)
      },
    
      // {String | Array}
      // 子虚拟节点 (VNodes),由 `createElement()` 构建而成,
      // 也可以使用字符串来生成“文本虚拟节点”。可选参数。
      [
        "先写一些文字",
        createElement("h1", "一则头条"),
        createElement(MyComponent, {
          props: {
            someProp: "foobar"
          }
        })
      ]
    );
    

    createElement(obj,{},[])

    参数详解:

    1. 第一个参数为渲染成哪个节点,接受 String,Object,Function 三种类型;
      • 如果是 String,比如是 div,那么表示此标签将会渲染成 div 标签;String 渲染成普通的 html 标签
      • 如果是 Object,比如是一个 Vue 的组件:TableFilter,那么表示此标签将会渲染一个组件。通常我们在单文件组件中使用的时候是 import {Table} from “iview”;然后在 template 中引用此标签;而使用 render 则需要使用 createElement 方式创建一个。
      • 如果是 Function,则可以根据自己的业务逻辑动态觉得是渲染成普通的 html 标签还是 Vue 组件。
    1. 第二个参数接受 一个对象{}类型的数据。其主要作用类似于组件中对某一个节点设置各种 bind 属性:设置样式 style,设置事件 on,设置类 class,设置自定义的命令,设置普通的 html 属性,设置传递参数 props 等等

    有一点要注意:正如在模板语法中,v-bind:class 和 v-bind:style,会被特别对待一样,在 VNode 数据对象中,下列属性名是级别最高的字段。该对象也允许你绑定普通的 HTML 特性,就像 DOM 属性一样,比如 innerHTML (这会取代 v-html 指令)。

    {
      // 和`v-bind:class`一样的 API
      // 接收一个字符串、对象或字符串和对象组成的数组
      'class': {
        foo: true,
        bar: false
      },
      // 和`v-bind:style`一样的 API
      // 接收一个字符串、对象或对象组成的数组
      style: {
        color: 'red',
        fontSize: '14px'
      },
      // 普通的 HTML 特性
      attrs: {
        id: 'foo'
      },
      // 组件 props
      props: {
        myProp: 'bar'
      },
      // DOM 属性
      domProps: {
        innerHTML: 'baz'
      },
      // 事件监听器基于 `on`,当子组件使用$emit()方式发生,使用on接收
      // 所以不再支持如 `v-on:keyup.enter` 修饰器
      // 需要手动匹配 keyCode。
      on: {
        click: this.clickHandler
      },
      // 仅用于组件,用于监听原生事件,而不是组件内部使用
      // `vm.$emit` 触发的事件。
      nativeOn: {
        click: this.nativeClickHandler
      },
      // 自定义指令。注意,你无法对 `binding` 中的 `oldValue`
      // 赋值,因为 Vue 已经自动为你进行了同步。
      directives: [
        {
          name: 'my-custom-directive',
          value: '2',
          expression: '1 + 1',
          arg: 'foo',
          modifiers: {
            bar: true
          }
        }
      ],
      // 作用域插槽格式
      // { name: props => VNode | Array<VNode> }
      scopedSlots: {
        default: props => createElement('span', props.text)
      },
      // 如果组件是其他组件的子组件,需为插槽指定名称
      slot: 'name-of-slot',
      // 其他特殊顶层属性
      key: 'myKey',
      ref: 'myRef',
      // 如果你在渲染函数中向多个元素都应用了相同的 ref 名,
      // 那么 `$refs.myRef` 会变成一个数组。
      refInFor: true
    }
    
    

    你会发现使用 render 函数没有与 v-model 的直接对应 - 你必须自己实现相应的逻辑:比如

    props: ['value'],
    render: function (createElement) {
      var self = this
      return createElement('input', {
        domProps: {
          value: self.value
        },
        on: {
          input: function (event) {
            self.$emit('input', event.target.value)
          }
        }
      })
    }
    
    
    1. 第三个参数为列表类型的数据,表示当前渲染组件的有哪些子组件。
    render(createElement=>
        return createElement(
        'div',
        {
        
        },
        // {String | Array}
        // 子虚拟节点 (VNodes),由 `createElement()` 构建而成,
        // 也可以使用字符串来生成“文本虚拟节点”。可选参数。
        [//
            '先写一些文字',
            createElement('h1', '一则头条'),
            createElement(MyComponent, {
            props: {
                someProp: 'foobar'
            }
            })
        ]
        ))
    
    

    注意:子组件中的每一项(VNodes)都必须是唯一的;意味着,下面的 render function 是无效的:

    render: function (createElement) {
      var myParagraphVNode = createElement('p', 'hi')
      return createElement('div', [
        // 错误-重复的 VNodes
        myParagraphVNode, myParagraphVNode
      ])
    }
    

    二、样例:如何给表格组件添加表头筛选

    效果图:

    iview的默认table组件不支持 表头输入框筛选,官方地址
    此处默认您有了一定的vue开发基础。
    套用iview官方的例子:

    //显示表格的例子
    <template>
      <Table border :columns="columns7" :data="data6"></Table>
    </template>
    <script>
    import { Table ,Button,Icon,Modal} from "iview";
    import Vue from "vue";
    export default {
      components: {
        Table
      },
      data() {
        return {
          columns7: [
            {
              title: "Name",
              key: "name",
              //使用render函数自定义列显示效果:文本加粗
              render: (h, params) => {
                return h("div", [//使用render渲染一个div标签
                  h(Icon, {//使用render渲染一个iview的组件
                    props: {//传递参数
                      type: "person"
                    }
                  }),
                  h("strong", params.row.name)//文字加粗
                ]);
              }
            },
            {
              title: "Age",
              key: "age"
            },
            {
              title: "Address",
              key: "address"
            },
            {
              title: "Action",
              key: "action",
              width: 150,
              align: "center",
              render: (h, params) => {
                return h("div", [//渲染一个div标签
                  h(
                    Button,//在div标签下渲染一个iview组件
                    {
                      props: {//传递参数
                        type: "primary",
                        size: "small"
                      },
                      style: {//设置样式
                        marginRight: "5px"
                      },
                      on: {//监听$emit事件
                        click: () => {
                          this.show(params.index);
                        }
                      }
                    },
                    "View"
                  ),
                  h(
                    Button,
                    {
                      props: {
                        type: "error",
                        size: "small"
                      },
                      on: {
                        click: () => {
                          this.remove(params.index);
                        }
                      }
                    },
                    "Delete"
                  )
                ]);
              }
            }
          ],
          data6: [
            {
              name: "John Brown",
              age: 18,
              address: "New York No. 1 Lake Park"
            },
            {
              name: "Jim Green",
              age: 24,
              address: "London No. 1 Lake Park"
            },
            {
              name: "Joe Black",
              age: 30,
              address: "Sydney No. 1 Lake Park"
            },
            {
              name: "Jon Snow",
              age: 26,
              address: "Ottawa No. 2 Lake Park"
            }
          ]
        };
      },
      methods: {
        show(index) {
          this.$Modal.info({
            title: "User Info",
            content: `Name:${this.data6[index].name}<br>Age:${
              this.data6[index].age
            }<br>Address:${this.data6[index].address}`
          });
        },
        remove(index) {
          this.data6.splice(index, 1);
        }
      },
    
      
    
      mounted(){
          //modal注入
          Vue.prototype.$Modal=Modal;
      }
      
    };
    </script>
    
    

    由于table组件表头筛选不支持输入框筛选,那么我们就必须的自己绘制。
    思路如下:

    • 找到表头所在的节点
    • 在表头节点后添加一个自定义筛选的div节点;
    • 使用render函数渲染一个下拉输入的单文件组件
     mounted(){
          //modal注入
          Vue.prototype.$Modal=Modal;
          //等dom元素渲染完成之后渲染筛选
          this.$nextTick(()=>{
            this.renderHeaderFilter();
          })
      }
    
    methods:{
     //添加头部筛选
        renderHeaderFilter(){
          let allHeader =document.querySelectorAll(".ivu-table-header .ivu-table-cell");
    console.log(allHeader);
    
          allHeader.forEach((element)=>{
            let createNew=document.createElement("div");
            createNew.classList.add("vue-header-filter");
            element.appendChild(createNew);
            new Vue({
              render(h){
                return h(TableHeaderFilter,{
                  props:{}
                })
              }
            }).$mount(createNew);
          })
        }
    }
    

    最后实现的效果为:

    此文源码案例:欢迎Star

    展开全文
  • ", // 组件 prop props: { type: "specId", options: self.specIdOptions, //下拉框选项 defaultValue: self.specId, //默认值 defaultProps: { value: "specId", label: "specName" } }, // 事件监听器 `on` 属性...
  • 表头筛选、自定义条件(支持前端筛选、后台筛选介绍请看 ) 拖动列调整顺序、隐藏显示列 excel导出(根据筛选条件和列顺序导出) 子表(表中表、无限层级、子表同样支持前3个功能) 5.拖动行 6.右击快捷菜单 7.合计...
  • 最近项目发现一个问题table表头筛选的时候,由于筛选内容过多导致弹出框超出屏幕,并且无法滚动,应急的办法是缩小浏览器显示比例让更多内容显示
  • 本文主要实现:根据el-table表格数据自动生成表头筛选条件的方法,可根据表格数据动态调整。 el-table表格的表头增加筛选功能,大家平时都是怎么实现的呢?先看看官方文档的例子: <template> <el-...
  • 有时表格中又有排序和筛选功能的时候不能点击表头触发筛选或者排序的触发 这种情况下,首先table中添加header-click触发函数 <el-table @header-click="headerClick"> 然后headerClick获取触发源的子...
  • ", // 组件 prop props: { defaultValue: self.fruit, // 默认值 filters: self.exampleFilters }, // 事件监听器 `on` 属性内, // 但不再支持如 `v-on:keyup.enter` 这样的修饰器。 // 需要处理函数中手动检查...
  • // 渲染表头的时候,会调用此方法, h为createElement的缩写版 renderHeaderOne(h, { column, $index }) { return ( {column.label} ...
  • el-table表头添加筛选功能
  • ant design vue 表头自定义筛选

    千次阅读 2020-05-22 16:28:55
    简单说,官方文档里还是借助column中onFilter方法进行筛选的,但是我这列是编码经过转译展现前端的。所以我的想法是借助它的样式,然后绑定一个函数,实现自定义搜索。 当时找到一个博客,注释还挺详细的。 地址点...
  • element-ui 表格的表头自定义筛选方法

    千次阅读 2020-10-12 16:47:43
    需求:表格的表头可以筛选 element-ui 自带了方法可以筛选筛选的原理是将不满足条件的隐藏了 element-ui 自带的方法:列中设置filters、filter-method属性即可开启该列的筛选, filters 是一个数组,filter-...
  • 对elementUI的el-table表格进行筛选操作,过程中需要点击表头实现筛选功能,加载出筛选项列表,并将自带的筛选项进行隐藏。 筛选项隐藏 .el-table__column-filter-trigger i{ display: none; } 表头实现筛选...
  • 基于vue + element-ui 实现表头多重筛选+分页 欢迎优化和补充 <template> <div> <div> <el-table :data="enterHouseData" style="width: 100%" ref="multipleTable" ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,432
精华内容 3,372
关键字:

如何在表头筛选