精华内容
下载资源
问答
  • 最近,有数据粉提出这样的需求:他希望使用筛选器过程中,筛选器中的筛选内容可以按需设定它们的排列顺序。 如下示例,原本上海中间位置,...可以看到,默认状态下,细分筛选器中的 消费者 是排第二位的。 ..

    前言

    在使用筛选器过程中,我们希望筛选器中的筛选内容可以按需设定它们的排列顺序。

    如下示例,原本上海在中间位置,设置后将上海方在最前面位置。

    在 Tableau 中,自定义筛选器的筛选值排序该如何实现呢?

    为方便学习,我们使用Tableau 自带的超市数据源。

     

    具体步骤如下:

    STEP 1:

    首先,我们创建2个工作表,然后放入仪表板中。可以看到,默认状态下,细分筛选器中的 消费者 是排在第二位的。

     

    STEP 2:

    接下来,我们右键点击维度 细分,选择:默认属性—排序。

    然后,可以看到三个排序依据:数据源顺序/字母/手动,这里我们选择 手动 排序。

    STEP 3:

    最后,选中 消费者 和 移至顶部 箭头,就可以将 消费者 选项放在筛选器第一个位置。

    如此,我们就完成了筛选器筛选值排序的自定义。

     

    Tips:这些步骤将不适用于利用日期字段创建的筛选器。因此,建议将日期转换成字符串类型的来设置筛选器。

     

     

    展开全文
  • 广告筛选及广告排序的一些想法

    千次阅读 2019-03-20 16:50:16
    广告筛选及广告排序的一些想法 广告投放系统中, 对于一个展示机会, 能投什么广告, 投哪个广告效果比较好, 和吃饭睡觉一样, 是广告系统要解决的基本需求. 能投什么广告, 是广告筛选的问题: 根据流量属性, 以及...

     

    转自:http://www.csyangchen.com/ads-filter-and-search.html

    广告筛选及广告排序的一些想法

     

    广告投放系统中, 对于一个展示机会, 能投什么广告, 投哪个广告效果比较好, 和吃饭睡觉一样, 是广告系统要解决的基本需求.

    能投什么广告, 是广告筛选的问题: 在根据流量属性, 以及一定的定向条件, 筛选出匹配的广告库存. 这个属于硬性条件, 比如说Android手机, 投放iOS应用的广告, 显然是不合适的.

    投哪个广告效果比较好, 就是说, 同样一个展示机会, 是投A应用获得的潜在回报高, 还是投B应用高? 这个属于软性条件. 在算法层面来说, 需要对效果正确预估, 这里不展开讨论. 落地系统实现层面, 需要有效地实现广告排序: 选择出在满足广告筛选的前提下, 优先级最高的广告进行投放.

    广告筛选, 以及广告排序, 在系统实践中, 觉得有一些相关之处. 这里斗胆讨论一下.

    这里的广告系统可以理解为DSP, 也适用于ADN场景.

    广告筛选

    广告筛选需求: 给定流量属性, 以及广告投放规则, 有效地筛选出满足流量条件的广告.

    从流量的属性以及广告的静态属性的关系来看, 分为一下几种情况:

    • 1 v M: e.g. 如投放地区地区, 操作系统, 网络链接方式等信息, 对于流量而言是单一属性, 但是广告定向可能是一个或者多种选择, 这种属于最常见的定向要求
    • N v 1: e.g. 流量对于广告会有黑/白名单要求, 如禁止投放的广告类别等
    • 范围筛选等其他筛选逻辑: 如, 指定年龄段投放, 等, 本文不涉及到这些筛选逻辑讨论, 只是想说业务上有各种的筛选逻辑

    动态的广告投放规则的来看:

    • 各个维度的投放频次控制
    • 预算控制以及消耗速率控制
    • 以及其他各种业务上的广告筛选逻辑

    这里把频次控制, 预算控制概念上划归到广告筛选里面, 因为从执行过程上来看, 都是属于决定一个广告是否要投的这一环.

    为了优化查询性能, 需要在投放程序内存中加载全部广告信息, 并设计合理的数据结构.

    单个筛选逻辑的优化

    类似 1 v M 的黑/白名单定向的筛选逻辑, 在代码最底层的筛选层面, 需要视情况采用 ordered map, hash map, trie 等数据结构. 列表遍历从列表上看似乎是很差的选择, 但其实考虑到 其他数据结构实现上的复杂性, 在 M 较小时也不见得差. 总而言之, 根据 profile 结果说话.

    另外, 对于流量的列表属性, 如黑/白名单之类, 可以对表示流量属性的数据结构进行预处理, 如将列表结构转换为字典结构, 从而避免不必要的遍历匹配操作.

    对于动态筛选逻辑, 会用到redis读取, 一个常见的办法是使用批量读取进行优化, 但是使用批量请求会导致逻辑严重耦合. 并且, 假设前一个从redis的读取操作已经决定了不匹配, 那么后续的批量读操作都是浪费的. 如果必要的话, 可以使用lua逻辑实现了这种条件读的批量操作, 不过这种redis里面用lua写逻辑, 对于redis吞吐不是很好, 另外在做redis集群化时会比较麻烦.

    单个广告定向筛选

    看到有些实现, 将广告过滤的业务逻辑堆砌在代码中, 导致整个代码随着业务需求变化频繁更新, 味道不好. 其实, 稍微重构一下, 就可以用一种可扩展的方式实现:

    type Filter func(ctx *BidContext) bool
    
    type Campaign struct {
        filters []Filter
    }
    
    // 获取流量属性信息
    ctx := getBidContext(...)
    ...
    // 决定单个广告是否匹配
    for f := range c.filters {
        if !f(ctx) {
            break
        }
    }
    

    这里每个filter关联到一个筛选逻辑, 在加载广告配置时注册到Campaign下. 值得一提的一点, 如果广告没有相关的定向条件, 则不用注册, 执行时也省去了相关筛选的判断逻辑.

    另外, filter的顺序是可以调整的, 我们可以很方便地通过调整filter的顺序来优化广告筛选的效率.

    filter 顺序的优化

    对于每个 filter, 有

    • 检查开销, 这里开销可以理解为延时, CPU消耗等.
    • 通过概率

    如果假定每个 filter 的检查开销相同, 那么问题简化为, 按照 通过概率 升序排列 即可.

    但实际上不能简化, 一些频次控制的 filter 涉及到外部数据的读取, 比内存中一次哈希表查找要高很多. 一个简单的做法就是将部内在内存中完成的 filter 永远排在后面, 从而减少不必要的外部读取.

    通过概率, 则是和流量分布情况相关, 在较短时间内看, 应当是比较稳定的.

    此外, 对于某些类型的 filter, 如频次 / 预算控制等, 其 通过概率 不是固定的, 随着自身状态改变而不断变化.

    在实现时, 可以通过统计单个广告每个 filter 的检查开销和通过概率, 对 filter 的顺序进行动态调整, 从而减少单个广告匹配的开销.

    多广告筛选定向

    以上讨论的是单个广告匹配的问题, 实际上我们有很大的广告池, 需要从中筛选出一批符合条件的广告.

    充分使用索引

    使用索引来减少需要检视的广告列表长度.

    索引维度的选择: 使用流量唯一属性, 如操作系统, 国家信息, 展示位尺寸等. 从而保证一次查询就能获取备选广告列表.

    对于不限定操作系统或者国家信息的投放计划, 需要枚举所有的国家/操作系统, 从而保证索引的正确性.

    另一种方式是将存在于索引中但没有定向的属性标记为ALL, 但对于每一个可能有ALL的属性, 需要再额外查找一次. 这种方式, 对于属性值无法枚举的情况, 如渠道ID定向, 也许更加适合.

    索引选择以优化流量匹配为先, 一个广告, 可能会有相关的多个索引. 在广告更新时, 对应的索引关系也需要正确更新.

    正常来说, 如果搞定了最常见的索引属性, 广告筛选简化为O(1)的查找. 一次投放决策的响应时间也就不会太慢.

    但是在极端情况下, 如果我们再投的广告实在太多了, 怎么办呢?

    调整广告顺序

    同一索引下, 也会有相同的广告候选, 需要再进一步检查. 那么如何决定遍历的顺序?

    从公平起见考虑, 为了保证每个广告都有相同的机会, 应当以随机的方式遍历.

    从优化效率的角度考虑, 和单个广告调整 filter 顺序思路相同, 对于筛选概率较低的广告, 降低其优先级. 顺序的调整可以主动, 比如说一个广告触发了投放的整体频次控制后, 或者说 throttle 后, 在最近T时间内绝对不会再投, 则可以主动暂停一段时间, 从而避免无效的筛选.

    广告暂停时间(或者说, 广告下次潜在可投时间), 可以作为一个排序依据, 按照暂停结束时间排序, 从而在遍历时, 遇到第一个尚未恢复的广告后, 结束遍历. (想一下, 真正实现时根本不需要排序, 只要记录下次可投的时间戳, 遍历时在单个广告筛选之前检查下即可, 其实应该算单个广告筛选优化策略)

    降级服务, 浅尝辄止

    另外, 如果对于广告筛选过程有硬性的响应指标, 在筛选过程中, 发现超时, 即刻放弃. 此外遍历过程中适当加入随机, 从而保证 “雨露均沾”, 也提高广告筛选的成功率. 此外, 降低单个请求的遍历深度, 提高单个请求响应时间, 也有助于提高并发处理能力.

    流量匹配情况监控

    在我们实际项目中, 需要统计流量和投放计划的不匹配情况, 以指导流量定向采买的优化.

    实现中, 我们对于每种投放定向不匹配标记了一个NBR码 (No Bid Reason). 在遍历备选广告, 没有发生匹配的时候, 按照最后一个不匹配的NBR统计.

    这种统计方式导致了最后统计上的偏差. 举例来说, 美国地区的展示机会, 先是匹配到了有定向美国的广告, 但是由于其它原因, 如预算不足, 导致放弃出价, 最后查询到了一个不投美国的广告, 并以国家定向不匹配统计此次竞价不出价原因. 这种统计方式, 理解上不合理, 因为我明明是有投放美国的广告, 就不应该有美国地区流量出现国家不匹配的情况.

    为了解决这种统计偏差, 我们将这些需要关心的维度放到索引里面来做, 并且在索引查询不匹配时, 需要知道第一个不匹配的维度, 从而统计NBR. 索引实现上, 使用简单的类似trie的嵌套结构可以比较好扩展的满足需求.

    但是, 索引维度的先后顺序对于统计结果也是有偏差的. 举例来说: 流量单从os看, 匹配度50%; 单从country看, 匹配度也是50%. 如果索引顺序是: os, country, 最终统计结果是, os不匹配的流量比country不匹配的多了一倍; 再进一步, 如果从os, country组合维度看没有匹配的广告 (比如说只有美国IOS流量, 印度Android流量, 但是我库存只投美国Anrdoid, 印度IOS), 统计结果上只有country不匹配的统计, 不能看出这种不匹配的原因.

    因此, 这种根据线上投放报告的不匹配维度来统计流量匹配, 得到的结果是片面的, 也没有考虑到维度组合因素的影响. 为了真是统计流量匹配情况, 还是需要将看到的流量维度统计下来, 然后去和库存情况做离线的匹配, 从而得到更精准的匹配报告.

    广告排序

    常见权重因素包括:

    • 预估的展示期望回报, 如ECPM, ECPC, 这些数据一般由广告优化算法离线或半实时给出
    • 业务上的一些设定, 如测试新单子, 优先跑量小的广告等
    • 广告是否在投, 也可以简化为优先级最高的权重因素, 因为排序后, 遇到第一个不在投的广告, 查询就可以结束了, 避免了对于下线广告的无谓访问. 也可以做一次截断就可以把下线的广告一次性剔除.

    优先级不一定是一个数值, 可以是多维的信息组成, 只要满足排序关系即可, 这样为广告投放规则留下了不少发挥的空间.

    优先级的权重设计应当是不敏感的, 保证在一段时间内的稳定性. 比如说, 以展示的量级, 而不是具体的展示数作为权重因素.

    排序优先级的数据来源, 一般是从外部数据库读取, 半实时更新, 并触发内存中数据结构的重排序.

    排序如何影响投放选择

    方式一: 高权重广告一定优先投放, 只有在频次控制等广告筛选规则不能通过的情况下, 才投较低优先级的广告; 对于相同优先级广告, 有同等投放机会.

    同优先级广告有相同机会, 实现上的一些方式: 一种办法是在排序时, 对于相同优先级元素时, 随机返回一个顺序关系, 从而保证顺序同优先级广告的遍历顺序是比较随机, 缺点是需要定时进行重新排序. 另外一种办法是自己设计数据结构, 遍历相同优先级元素时, 按照一个随机顺序访问, 这种实现起来不难.

    这种投放方式导致一个时间段内则集中在某些广告, 尽快出量, 而其他低优先级广告没有投放试错机会. 如果从观察效果数据的角度, 还是需要做到”雨露均沾”, 低优先级广告也有投放的机会.

    方式二: 高权重广告有更高的投放机会, 而不是一定优先投放

    实现上: 每个优先级单独一个队列, 访问每个队列的顺序按照权重决定. 这种带权的随机, 需要我们知道整个队列的权和, 对于非数值型的优先级设计, 处理起来会比较麻烦了. 可以在排序时, 不相等的元素间加差标记位, 从而解决问题.

    上述这里两种方式, 不一定哪个更好, 需要结合实际情况来看, 甚至是可以组合在一起来用的. 比如说: 优先投放有转化的广告, 按照转化率作为权重, 按照方式二投放; 对于转化率太低还未有统计意义的广告, 按照展示数量级作为权重, 从而尽快拉近每个广告的展示量级.

    优先级和流量属性有关

    我们之前的讨论, 全部建立在优先级和流量属性无关的假设下讨论的. 实际上每个广告的效果, 适合流量属性相关的.

    简单的例子: 同一广告, 在不同的渠道的表现不一样, 如果渠道总数不多, 简单做法, 每个渠道一个维护一个优先队列; 更加深挖一点: 效果可能是由渠道的各种流量属性标签导致的, 或者是使用者的偏好习惯决定, 如应用类型, 广告位属性, 等等. 这里首先要确定的决定投放效果的 feature 集合.

    如果 feature 集合已经确定, 可以根据各个 feature 的组合, 创建广告排序的索引. 这块儿可以和多广告筛选的索引类似.

    在维度组合确定的情况下, 这种是可行的, 但是如果选择的 feature 是不能预先枚举的, 可以通过懒初始化的方式来做.

    总结

    不好意思, 写得有点混乱, 总结几点:

    • 一种灵活的插件式的广告筛选结构
    • 基于这种插件式的广告筛选结构, 我们可以在单个广告的 筛选逻辑 执行顺序, 以及多个广告的检视顺序上, 进行类似的排序优化, 以提高 广告筛选 效率
    • 广告排序, 由广告优化算法提供权重指标, 其目的是为了效果优化, 讨论了在落地到具体实现上时, 会遇到的几种情况和解决思路
    展开全文
  • vue 条件筛选 排序(二)

    千次阅读 2018-07-24 11:11:02
    和 “vue页面传参$route 编辑 预览” ...-- 筛选输入框 --> <el-input class="int-1" v-model='yName' placeholder="请输入...

    和 “vue页面传参$route 编辑 预览”  https://blog.csdn.net/qq_39109182/article/details/81045243 页面一样,只不过数据换成v-for 循环出来

    html 部分

    <!-- 筛选输入框 -->
    <el-input class="int-1"  v-model='yName'  placeholder="请输入员工姓名"></el-input>
    <!-- 数据列表 -->
    <table class="el-table el-table--fit el-table--border el-table--enable-row-hover el-table--enable-row-transition" cellpadding="0" cellspacing="0">
        <thead class="el-table__header" >
            <tr>
                <th style="width:100px;">ID</th>
                <th>标题</th>
                <th>姓名</th>
                <th>手机</th>
                <th>时间</th>
                <th>总价
                    <span @click="orderFn('money', false)">↑</span>
                    <span @click="orderFn('money', true)">↓</span>				
                </th>
                <th>头像</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody style="text-align: center;">
            <tr v-for="(item,i) in testpage2.slice((currentPage-1)*pagesize,currentPage*pagesize)" >
                <td>{{item.id}}</td>
                <td>{{item.title}}</td>
                <td>{{item.peo}}</td>
                <td>{{item.tel}}</td>
                <td>{{item.dataTimes}}</td>
                <td>{{item.money}}万</td>
                <td><p class="pic"><img :src="item.pho" /></p></td>
                <td>	
                    <el-button size="mini" type="success" class="yl-sty"><i class="el-icon-search"></i>预览</el-button>				
                    <el-button size="mini" type="primary" v-model="msg" @click="xiugai(i)"><i class="el-icon-edit"></i>修改
                    </el-button>	
                    <el-button size="mini" type="danger"  @click="deleteRow(i,testpage)"><i class="el-icon-delete"></i>删除</el-button>
                </td>		
            </tr>
        </tbody>
    </table>
    <!-- 这部分是分页 -->		
    <div class="yema">
    	<el-pagination background
    		@size-change="handleSizeChange" 
    		@current-change="handleCurrentChange"  
    		:current-page="currentPage"  
    		:page-sizes="[5,10,15]"
    		:page-size="pagesize"   
    		layout="total,jumper,prev, pager, next,sizes"
    		:total="testpage2.length" >
    	</el-pagination>
    </div>
    <!-- 这部分是分页 End-->
    
    
    

    Js部分

    export default {
        data() {
            return {
                url:"/static/list.json" , //数据接口
                testpage: [],
                currentPage:1,//
                pagesize:5,//每页显示条数
                msg:'',
    
                id:'',
                peo:'',
                tel:'',
                dataTimes:'',
    
                yName:'',//筛选输入框的值
                d_sort:'',       //默认不排序
                newSort:false,//默认从小到大排列
            }
        },
        created(){
            this.getData();//初始数据列表
        }, 
    
        methods: {  
            //获得表格数据
            async getData(){
                let dangqian = this;
                let dizhi = await dangqian.$axios.get(dangqian.url);
                dangqian.testpage = dizhi.data.imgListData;
                console.log(dangqian.testpage);
                //dangqian.sou(dangqian.testpage.numId);
            }, 
    
            //修改
            xiugai(index, row) {
                this.$message('修改第'+(index+1)+'行');   
                let pageNum=this.pagesize;//每页数据个数
                let yeNum=this.currentPage;//第几页
                console.log(yeNum)
                let zhi = this.testpage[index+pageNum*yeNum-pageNum];//得到当前行的数据	
                this.$router.push({name: 'bianji',params:{num:zhi}})
                //跳转到修改的页面
            },
    		
            ///删除  这里是假的删除
    
            deleteRow(index, row) {
                this.$message.error('删除第'+(index+1)+'行');            
                //let iList = row;   
                //console.log(iList)            
                let pageNum=this.pagesize;//每页数据个数
                let yeNum=this.currentPage;//第几页
                console.log(yeNum)	                        
                //let zhi = this.testpage[index+pageNum*yeNum-pageNum];            
                //let iList = this.testpage[index+pageNum*yeNum-pageNum];  
                //console.log(iList)
                row.splice(index+pageNum*yeNum-pageNum,1)                                                                   
            },
    
            ///分页  初始页currentPage、初始每页数据数pagesize和数据testpage
            handleSizeChange:function(size){
                this.pagesize=size;
            },
            handleCurrentChange:function(currentPage){
                this.currentPage=currentPage;
            },
            ///分页End  初始页currentPage、初始每页数据数pagesize和数据testpage
            //排序
            orderFn(d_sort,newSort){
                this.d_sort = d_sort;       
                this.newSort = newSort;   
            },
    
        },
    
        computed:{
            筛选
            testpage2: function(){
                var _this = this;	      	
                //逻辑-->根据input的value值筛选testpage中的数据
                var arrByZM = [];//声明一个空数组来存放数据
                for (var i=0;i<this.testpage.length;i++){
                //for循环数据中的每一项(根据姓名值搜)
                    if(this.testpage[i].peo.search(this.yName) != -1){
                    //判断输入框中的值是否可以匹配到数据,如果匹配成功
                        arrByZM.push(this.testpage[i]);
                        //向空数组中添加数据
                    }
                }
    
    
                //排序  逻辑-->升序降序排列  false: 默认从小到大  true:默认从大到小
                //判断,如果要d_sort不为空,说明要进行排序
                if(this.d_sort != ''){
                    arrByZM.sort(function( a , b){
                        if(_this.newSort){
                            return b[_this.d_sort] - a[_this.d_sort];
                        }else{
                            return a[_this.d_sort] - b[_this.d_sort];
                        }
                    });
                } 
    
               //返回筛选后的数据
               return arrByZM;
            }
        }
    
    }

    json格式

    {
      "imgListData": [{
          "id": "1",
          "title": "标题",
          "content": "内容 ",
          "city": "城市",
          "adrs": "地址描述",
          "room": "文字描述",
          "imgUrl": "图片地址 ",
          "dataTimes": "日期",
          "peo": "姓名",
          "tel": "手机号",
          "pho": "img的src地址",
          "money": "总价格",
          "unitprice": "单价",
          "state": "状态",
          "gender": "性别",
          "tag": [
            {
              "tags": "标签一"
            },
            {
              "tags": "标签七"
            },
            {
              "tags": "标签八"
            }
          ]
        }, {
          "id": "2",
          "title": "标题",
          "content": "内容",
          "city": "城市",
          "adrs": "地址描述",
          "room": "文字描述",
          "imgUrl": "图片地址 ",
          "dataTimes": "日期",
          "peo": "姓名",
          "tel": "手机号",
          "pho": "img的src地址",
          "money": "总价格",
          "unitprice": "单价",
          "state": "状态",
          "gender": "性别",
          "tag": [
            {
              "tags": "标签一"
            },
            {
              "tags": "标签七"
            },
            {
              "tags": "标签八"
            }
          ]
        }
    
      ]
    }
    

    没筛选前

     

    筛选效果

     

    排序

     

     

    展开全文
  • 调用table 排序时,出现排序有三种状态 element-ui 中,也定义了 sort-orders 有三种状态: ascending、descending、null,这三种状态形成一个循环切换。 案例如下: &lt;el-table ref="...

    在调用table 排序时,出现排序有三种状态:

    在  element-ui 中,也定义了 sort-orders 有三种状态: ascending、descending、null,这三种状态形成一个循环切换。

    案例如下:

    <el-table
        ref="multipleTable"
        :data="tableData3"
        tooltip-effect="dark"
        style="width: 100%;cursor: pointer;"
        :default-sort = "{prop: 'name', order: 'ascending'}"
        @sort-change="handleSortChange"> 
        <el-table-column
          label="上次更新"
          prop="last_modification_times"
          sortable
          width="100">
        </el-table-column> 
    </el-table>

    @sort-change 事件:表格的排序条件发生变化的时触发,参数 { column, prop, order }, 分别代表的意义是:

    column:当前列

    prop:当前列需要排序的数据

    order:排序的规则(升序、降序和默认[默认就是没排序])

    handleSortChange(val) {
      if(val.column){
        this.sortOrder = val.order == 'ascending'? 2 : 1
        this.sortField = val.prop == 'name'? 2 : 1
        //调用排序接口
      }
      // this.$refs.multipleTable.clearSort()
    },

    default-sort属性: 


    更新 2021.02.17

    element-ui 官网现在提供了 sortable 参数:对应列是否可以排序,如果设置为 'custom',则代表用户希望远程排序,需要监听 Table 的 sort-change 事件。

    sort-orders:数据在排序时所使用排序策略的轮转顺序,仅当 sortable 为 true 时有效。需传入一个数组,随着用户点击表头,该列依次按照数组中元素的顺序进行排序。数组中的元素需为以下三者之一:ascending表示升序,descending表示降序,null 表示还原为原始顺序。如果不想要默认状态,那只需配置 ['ascending', 'descending'] 即可。

     

     

    展开全文
  • 假如商品模型中,有一个价格字段trueprice,我希望根据价格从小到大,或从大到小进行点击筛选.或按热门,最新商品进行排序,效果...另外,模板上用到了{dede:php}标签,需要后台系统设置.系统基本参数,其它设置中,去掉对php
  • 基于ES的搜索+筛选+排序解决方案

    万次阅读 2018-03-13 19:59:12
    转载提纲:曾经的基于MongoDB的筛选+排序解决方案MongoDB方案的缺陷看中了搜索引擎的facet特性看中了ES的简洁看中了ES的天生分布式设计窝窝的ES方案ES的几次事故和教训ES自身存在的问题一,曾经的基于 MongoDB 的...
  • 第6章 数据筛选排序 一.TreeView控件 TreeView控件用来显示一个树状的菜单 1.认识TreeView控件 TreeView用于以节点形式显示文本或数据,这些节点按层次结构的顺序排序TreeView控件中的复选框和图标可以...
  • DropDownMenu下拉筛选排序Menu

    千次阅读 2016-03-09 21:15:24
    下拉筛选 Menu * */ public class DropDownMenu extends LinearLayout { // 顶部菜单布局 private LinearLayout tabMenuView ; // 底部容器,包含 popupMenuViews , maskView private ...
  • 类似美团,糯米,大众点评的筛选排序菜单EasyDropDownMenu 支持文字以及图标的选择状态记录
  • 使用 DataView 对数据排序筛选

    千次阅读 2008-04-14 20:46:00
    使用 DataView 对数据排序筛选 DataView 提供了几项用于对 DataTable 中的数据进行排序筛选的功能: 使用 Sort 属性,您可以指定单个或多个列排序顺序并包含 ASC(升序)和 DESC
  • 文章目录一、处理Excel文件数据,对其筛选后的数据保存到新的Excel二、校验数据及保存新的Excel文件 一、处理Excel文件数据,对其筛选后的数据保存到新的Excel # -*- coding:utf-8 -*- import pandas as pd from ...
  • 效果图 ...<el-table v-loading="loading" ... //状态筛选 @filter-change="handleFilterChange" //分数和时间筛选 @sort-change="changeTableSort" :row-class-name="addRowClass" //全选 @selection-c
  • ant design pro中可控的筛选排序

    千次阅读 2019-01-01 16:05:19
    清除筛选和年龄排序 {/*columns标题栏 dataSource内容栏根据标题填充数据*/} ); } } export default SortTable; 未排序 名字排序 名字排序 年龄排序 年龄排序 地址排序 地址排序 ...
  • 1.DataTable.DefaultView.Sort = "字段1,字段2,排序方式";以设置DefaultView的输出的排序方式; 2.(1)dataTable.DefaultView.RowFilter="Vendor='Rawlings'";...同样DataTable里面也可以进行简单的搜索,返回一
  • copycityData为空数组),letter数组翻看上面第四个代码区块进行复制粘贴 基础操作完毕,created中执行函数,并且上述函数中的接口请求函数最后一行打印wordJson数组 三、完善,上面只是按照拼音首字母做了排序,...
  • 有时候我们需要筛选显示数据集中的某些数据来进行个性化显示。比如从DataTable中挑出符合条件的某些数据来...所以我们得到数据集(dataset,datatable)后,只需对其进行本地筛选就行,这样可以解决前面那种方法带来
  • 自定义条件、多重排序 // 普通排序 qb = qb.orderBy('update_time', 'DESC') // 自定义条件,且多重排序 // 例如:assignee字段为 ${userName} 的优先显示,然后再此基础上再进行时间和状态排序 qb = qb .order...
  • 详解IView表格的排序sortMethod,筛选filterMethod方法 ​ IView框架(https://www.iviewui.com/)是一套基于 Vue.js 的高质量UI 组件库,整体的效果还是非常好看的。但是其中的表格组件虽然没有bootstrap-table...
  • 这篇文章主要为大家详细介绍了Vue.js实现多条件筛选、搜索、排序及分页的表格功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 与上篇实践教程一样,这篇文章中,我将继续从一种常见的功能——表格...
  • 直接上代码 1,定义的过滤器 @FXML private TextField filterTxt; 2,绑定过滤器的共通方法 /** * &lt;pre&gt; * 为TableColumn绑定过滤器 ... * @param observableList 筛选的数据集合 * @...
  • Excel中当对日期进行相应的筛选时,默认会根据年份、月份进行分组,如图1所示: ...文件–选项–高级–此工作表的显示选项中–取消自动筛选菜单分组日期前的√即可:具体可看图2 图2 最终结果如图3: 图3 ...
  • 3.接下来我们service bean @Service public class TaskService { @Autowired TaskDao taskDao ; /** * 复杂查询测试 * @param page * @param size * @return */ public Page<Task> findBySepc...
  • 决定放假期间先不上iOS Wow体验了;手头这篇译文不做完的话我心不甘。...今次这篇则是来自于本书的第四章——搜索、排序筛选。貌似国内引进版也由XX出版社做着了,真心不关我事,自己走起。接下来
  • 需求分析 还是先从试求入手,想想实现这样一个...当数据比较多时,我们需要提供一些筛选条件,让用户更快列出他们关注的数据。除了预设的一些筛选条件,可能还需要一些个性化的输入搜索功能。对于有明显顺序关系的
  • - 优化接口:用户可以实现对字段的排序筛选及统计等功能。 显示方式: -List:类似于write语句输出的表单形式 -Grid: 每个输出字段提供按钮,用户可以自行设定,操作更为灵活运用Function ALV之前需要

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,320
精华内容 16,928
关键字:

在筛选状态下如何排序