精华内容
下载资源
问答
  • ABAP如何自定义下拉列表1. 在选择屏幕上添加下拉列表控件, 代码如下: PARAMETERS: auart LIKE vapma-auart AS LISTBOX VISIBLE LENGTH 6 DEFAULT ZESC OBLIGATORY. 2. 手工添加下拉列表数据, 代码如下...

      ABAP如何自定义下拉列表

    1. 在选择屏幕上添加下拉列表控件, 代码如下:

      PARAMETERS: auart LIKE vapma-auart AS LISTBOX   VISIBLE LENGTH 6 

        DEFAULT 'ZESC' OBLIGATORY.

    2. 手工添加下拉列表数据, 代码如下:

      *&---------------------------------------------------------------------*
    *&      Form  fill_data_to_auart
    *&---------------------------------------------------------------------*
    *       to fill data for combo auart.
    *----------------------------------------------------------------------*
    FORM fill_data_to_auart .
      TYPE-POOLS: vrm . "存放combobox内容的type pool
      DATA: name TYPE vrm_id, " list box的名称
            list TYPE vrm_values, " list box的值
            value LIKE LINE OF list . " list box的结构

      REFRESH list .

      DEFINE fill_list.
        value-key = &1.  "个就是变量P_LIST的值
        value-text = &2"这个是text
        append value to list.
      END-OF-DEFINITION.

      fill_list 'ZESC' 'ZESC'.
      fill_list 'ZESE' 'ZESE'.
      fill_list 'ZEDN' 'ZEDN'.
      fill_list 'ZEEN' 'ZEEN'.
      fill_list 'ZPBB' 'ZPBB'.
      fill_list 'ZPBE' 'ZPBE'.
      fill_list 'ZPDN' 'ZPDN'.
      fill_list 'ZPEN' 'ZPEN'.
      fill_list 'ZOCS' 'ZOCS'.
      fill_list 'ZASC' 'ZASC'.
      fill_list 'ZASE' 'ZASE'.
      fill_list 'ZADN' 'ZADN'.
      fill_list 'ZAEN' 'ZAEN'.

      "---〉调用函数显示listbox里面的值
      CALL FUNCTION 'VRM_SET_VALUES'
        EXPORTING
          id     = 'AUART'  " PARAMETERS's Name
          values = list.
    ENDFORM.                    " fill_data_to_auart

     

    3. 在 AT SELECTION-SCREEN OUTPUT. 事件中填充数据,代码如下:

        PERFORM fill_data_to_auart.

     

    以上代码,ECC6环境下通过。

    展开全文
  • 1. 在选择屏幕上添加下拉列表控件, 代码如下: PARAMETERS: auart LIKE vapma-auart AS LISTBOX VISIBLE LENGTH 6 DEFAULT 'ZESC' OBLIGATORY. 2. 手工添加下拉列表数据, 代码如下: *&--------...
    1. 在选择屏幕上添加下拉列表控件, 代码如下:
    
      PARAMETERS: auart LIKE vapma-auart AS LISTBOX   VISIBLE LENGTH 6 
    
        DEFAULT 'ZESC' OBLIGATORY.
    
    2. 手工添加下拉列表数据, 代码如下:
    
      *&---------------------------------------------------------------------*
    *&      Form  fill_data_to_auart
    *&---------------------------------------------------------------------*
    *       to fill data for combo auart.
    *----------------------------------------------------------------------*
    FORM fill_data_to_auart .
      TYPE-POOLS: vrm . "存放combobox内容的type pool
      DATA: name TYPE vrm_id, " list box的名称
            list TYPE vrm_values, " list box的值
            value LIKE LINE OF list . " list box的结构
    
      REFRESH list .
    
      DEFINE fill_list.
        value-key = &1.  "个就是变量P_LIST的值
        value-text = &2. "这个是text
        append value to list.
      END-OF-DEFINITION.
    
      fill_list 'ZESC' 'ZESC'.
      fill_list 'ZESE' 'ZESE'.
      fill_list 'ZEDN' 'ZEDN'.
      fill_list 'ZEEN' 'ZEEN'.
      fill_list 'ZPBB' 'ZPBB'.
      fill_list 'ZPBE' 'ZPBE'.
      fill_list 'ZPDN' 'ZPDN'.
      fill_list 'ZPEN' 'ZPEN'.
      fill_list 'ZOCS' 'ZOCS'.
      fill_list 'ZASC' 'ZASC'.
      fill_list 'ZASE' 'ZASE'.
      fill_list 'ZADN' 'ZADN'.
      fill_list 'ZAEN' 'ZAEN'.
    
      "---〉调用函数显示listbox里面的值
      CALL FUNCTION 'VRM_SET_VALUES'
        EXPORTING
          id     = 'AUART'  " PARAMETERS's Name
          values = list.
    ENDFORM.                    " fill_data_to_auart
    
     
    
    3. 在 AT SELECTION-SCREEN OUTPUT. 事件中填充数据,代码如下:
    
        PERFORM fill_data_to_auart.
    
     
    
    以上代码,ECC6环境下通过。

     

    转载于:https://www.cnblogs.com/wangxiaowen/p/8994412.html

    展开全文
  • 然而当编写自定义下拉列表的时候,就会碰到一个问题:如果用户在下拉列表的范围外进行鼠标点击的操作,如何关闭已经打开的下拉列表? 解决思路如下:在 DOM 的根节点上添加一个 click 事件,同时下拉列表内阻止事件...

    在开发过程中,为了效果好看,往往需要自己开发一个下拉列表,而不是使用 HTML 自身的 select 下拉列表。然而当编写自定义下拉列表的时候,就会碰到一个问题:如果用户在下拉列表的范围外进行鼠标点击的操作,如何关闭已经打开的下拉列表?

    解决思路如下:在 DOM 的根节点上添加一个 click 事件,同时下拉列表内阻止事件的默认行为和冒泡。当响应这个点击事件的时候,说明是在下拉列表范围外的点击(因为下拉列表内阻止了事件的冒泡),就可以关闭已经打开的下拉列表。

    如果是纯 JS 代码,有人可能会使用 document.onclick 来添加根节点事件。不过,我现在使用 Vue.js,会选择使用 Vue.js 的方式处理这个问题。

    Vue.js 使用组件化的方式组织代码,会有一个根组件,可以在这个根组件上加上 @click 事件,来响应区域外的点击事件。在一个完整的应用中,可能有多种场景需要这种区域外点击关闭的功能。除了最普通的表单里的下拉列表外,还可能是网站右上角的消息提示框,或者菜单。比较合适的做法是把点击事件的具体处理逻辑放到各个组件中去。

    那么如何让各个子组件响应根组件上的点击事件呢?可以使用Vuex来做到这一点。在这里 Vuex 起到了组件之间互相传递信息的作用。

    读者可以在这个网址下载我编写的 Demo 项目:http://download.csdn.net/detail/zhangchao19890805/9855750
    推荐读者使用 yarn install 安装所需的依赖。

    下面说一下关键代码:

    程序入口 main.js:

    import Vue from 'vue'
    import App from './App.vue'
    import VueRouter from 'vue-router'
    import routes from './router'
    import VueSuperagent from 'vue-superagent'
    import Vuex from 'vuex'
    import 'babel-polyfill';
    import store from './vuex/store';
    
    Vue.use(VueRouter);
    Vue.use(VueSuperagent);
    Vue.use(Vuex);
    
    const router = new VueRouter({
      mode: 'history',
      routes
    })
    
    new Vue({
      el: '#app',
      router,
      store,
      render: h => h(App)
    })
    

    根节点 App.vue,添加了点击事件。

    <template>
      <div @click="clickRoot">
        <router-view></router-view>
      </div>
    </template>
    
    <script>
        export default {
            methods:{
                clickRoot(event){
                    this.$store.dispatch("clickRootNumAction", 1);
                }
            }
        }
    </script>
    

    Vuex 文件结构

    vuex
     │
     └─modules
          ├─clickRoot
          │    ├─actions.js
          │    ├─getters.js
          │    ├─index.js
          │    └─mutations.js
          │
          └─store.js

    actions.js

    export default {
        // action 允许异步加载,实际项目中
        // 这里可以发起个请求,再返回。
    
        clickRootNumAction(context, value) {
            context.commit('clickRootNum', value);
        }
    }
    

    getters.js

    export default {
        getClickRootNum(state) {
            return state.clickRootNum;
        }
    }
    

    index.js

    import actions from './actions'
    import getters from './getters'
    import mutations from './mutations'
    
    const state = {
        clickRootNum: 0
    }
    
    export default {
        state,
        actions,
        getters,
        mutations
    }
    

    mutations.js

    export default {
        clickRootNum(state, value) {
            let sum = state.clickRootNum + value
            state.clickRootNum = sum;
        }
    }
    

    store.js

    import Vue from 'vue';
    import Vuex from 'vuex';
    import clickRoot from './modules/clickRoot'
    Vue.use(Vuex);
    
    const debug = process.env.NODE_ENV !== 'production';
    
    export default new Vuex.Store({
        modules: {
            clickRoot
        },
        strict: debug
    })
    

    页面代码 test.vue

    <template>
        <div >
            <p>测试</p>
            <table>
                <tbody>
                    <tr>
                        <td style="vertical-align: top;">
                            <div class="dropDownList">
                                <button class="controll" @click.prevent.stop="listShow()" 
                                        @keydown.prevent.40="arrowDown1" @keydown.prevent.38="arrowUp1">
                                    {{selectItem}}
                                    <span  :class="['triangle',showList==false?'triangleShow':'triangleHidden']"></span>
                                </button>
                                <ul class="showList" v-if="showList" @click.prevent.stop>
                                    <input v-model="filterText" class="search"/>
                                    <li v-for="item in newObj" class="optionArea" @click="selectOption(item)">  {{item.type}} </li>
                                </ul>
                            </div>
                        </td>
                        <td style="vertical-align: top;">
                            <div class="dropDownList">
                                <button class="controll" @click.prevent.stop="listShow2()" 
                                        @keydown.prevent.40="arrowDown2" @keydown.prevent.38="arrowUp2">
                                    {{selectItem2}}
                                    <span  :class="['triangle',showList2==false?'triangleShow':'triangleHidden']"></span>
                                </button>
                                <ul class="showList" v-if="showList2" @click.prevent.stop>
                                    <input v-model="filterText2" class="search"/>
                                    <li v-for="item in newObj2" class="optionArea" @click="selectOption2(item)">  {{item.type}} </li>
                                </ul>
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    
    </template>
    <script>
        export default {
            data(){
                return {
                    showList:false,
                    obj:[
                        {type:"男装"},
                        {type:"女装"},
                        {type:"童装"},
                        {type:"老年装"},
                    ],
                    filterText:"",
                    selectItem:"请选择",
    
                    showList2:false,
                    obj2:[
                        {type:"奔驰"},
                        {type:"桑塔纳"},
                        {type:"大众"},
                        {type:"比亚迪"},
                    ],
                    filterText2:"",
                    selectItem2:"请选择"
                };
    
            },
            methods:{
                listShow(){
                    this.showList=!this.showList;
                    if (this.showList2) {
                        this.showList2 = false;
                    }
                },
                selectOption(item){
                    this.selectItem=item.type;
                    this.showList=false;
                },
                // 第一个下拉列表 按键:向下的箭头
                arrowDown1(e){
                    if (!this.showList) {
                        this.showList = true;
                    }
                    if (this.showList2) {
                        this.showList2 = false;
                    }
                },
                // 第一个下拉列表 按键:向上的箭头
                arrowUp1(e){
                    if (this.showList) {
                        this.showList = false;
                    }
                    if (this.showList2) {
                        this.showList2 = false;
                    }
                },
                listShow2(){
                    this.showList2=!this.showList2;
                    if (this.showList) {
                        this.showList = false;
                    }
                },
                selectOption2(item){
                    this.selectItem2=item.type;
                    this.showList2=false;
                },
                // 第二个下拉列表 按键:向下的箭头
                arrowDown2(e){
                    if (!this.showList2) {
                        this.showList2 = true;
                    }
                    if (this.showList) {
                        this.showList = false;
                    }
                },
                // 第一个下拉列表 按键:向上的箭头
                arrowUp2(e){
                    if (this.showList2) {
                        this.showList2 = false;
                    }
                    if (this.showList) {
                        this.showList = false;
                    }
                }
            },
            computed:{
                newObj:function(){
                    let self = this;
                    return self.obj.filter(function (item) {
                        return item.type.toLowerCase().indexOf(self.filterText.toLowerCase()) !== -1;
                    })
                },
                newObj2:function(){
                    let self = this;
                    return self.obj2.filter(function (item) {
                        return item.type.toLowerCase().indexOf(self.filterText2.toLowerCase()) !== -1;
                    })
                }
            },
            watch:{
                '$store.getters.getClickRootNum': function () {
                    if (this.showList){
                        this.showList = false;
                    }
                    if (this.showList2) {
                        this.showList2 = false;
                    }
                }
            }
        };
    </script>
    <style lang="scss" rel="stylesheet/scss" scoped>
        .dropDownList{
            margin-left:50px;
            width: 150px;
            .controll{
                position: relative;
                width: 150px;
                border: 1px solid #E3E9EF;
                cursor: pointer;
                .triangle{
                    display: inline-block;
                    position: absolute;
                    top: 7px;
                    right: 10px;
                    cursor: pointer;
                }
                .triangleHidden{
                    border-left: 5px solid transparent;
                    border-right: 5px solid transparent;
                    border-bottom: 8px solid #676F7F;
                }
                .triangleShow{
                    border-left: 5px solid transparent;
                    border-right: 5px solid transparent;
                    border-top: 8px solid #676F7F;
                }
            }
            .showList{
                margin: 0;
                padding: 0;
                border: 1px solid #E3E9EF;
                // padding-top: 5px;
                padding-bottom: 5px;
                margin-top: 2px;
                width: 145px;
                .search{
                    width: 141px;
                    border: 1px solid #E3E9EF;
                }
                .optionArea{
                    list-style: none;
                    cursor: pointer;
                    font-size: 14px;
                    margin-left: 5px;
                    &:hover{
                        background-color: #B2CFEB;
                        color: #fff;
                    }
                }
            }
        }
    </style>
    展开全文
  • 然而当编写自定义下拉列表的时候,就会碰到一个问题:如果用户在下拉列表的范围外进行鼠标点击的操作,如何关闭已经打开的下拉列表? 解决思路如下:在 DOM 的根节点上添加一个 click 事件,同时下拉列表内阻止事件...
  • 本篇文章给大家带来的内容是关于小程序实例:如何自定义下拉刷新,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。自定义组件:js:// components/test/test.jsComponent({/*** 组件的属性列表*/...

    本篇文章给大家带来的内容是关于小程序实例:如何自定义下拉刷新,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    自定义组件:

    js:// components/test/test.jsComponent({/*** 组件的属性列表*/properties: { }, /*** 组件的初始数据*/data: {scrollHeight: 0,startY: 0,tips: '下拉刷新',isRefreshing: false}, /*** 组件的方法列表*/methods: {end: function(e) {if (this.data.isRefreshing) {return}if (this.data.scrollHeight >= 50) {this.setData({scrollHeight: 50,tips: '正在刷新',isRefreshing: true})this.triggerEvent('onRefresh')} else {this.setData({scrollHeight: 0,tips: '下拉刷新'})}},move: function(e) {if (this.data.isRefreshing) {return} var that = this;var moveY = e.touches[0].pageY;var dY = moveY - that.data.startY;console.log(dY);if (dY >= 50 && dY <= 80) {this.setData({tips: '松开加载',scrollHeight: dY})} else if (dY > 80) {this.setData({tips: '松开加载',scrollHeight: 80})} else {this.setData({tips: '下拉刷新',scrollHeight: dY})} }, start: function(e) {this.data.startY = e.touches[0].pageY;}, stopRefresh: function() {this.setData({isRefreshing: false,scrollHeight: -50})},}})

    wxml:{{tips}}

    wxss:其中引用了weui 这个用不用都无所谓的很简单的@import '/pages/common/weui.wxss';page{height: 100%;} .loading-container{height: 100%;}

    pages里wxml:

    js://刷新方法回调onRefresh: function() {var that = this;setTimeout(function(){that.selectComponent("#loadmore").stopRefresh();},3000)},json:{"enablePullDownRefresh": false,"usingComponents":{"loadmore":"../../components/test/test"}}

    展开全文
  • 在dev中本身也有自带下拉控件,但用过的人都会遇到一个问题ComboxEdit这个无法绑定...今天说说如何自定义一个下拉列表控件 新建一个用户控件UserControl 在控件上拖放PopupContainerEdit设置Dock属性为top,在拖...
  • 本篇文章给大家带来的内容是关于小程序实例:如何自定义下拉刷新,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。自定义组件:js:// components/test/test.jsComponent({/*** 组件的属性列表*/...
  • js // components/test/test.js Component({ /*** 组件的属性列表*/ properties: { }, /*** 组件的初始数据*/ ...tips: '下拉刷新', isRefreshing: false }, /*** 组件的方法列表*/...
  • Android中的有个原生的下拉列表控件Spinner,但是这个控件有时候不符合我们自己的要求, 比如有时候我们需要类似windows 或者web网页中常见的那种下拉列表控件,类似下图这样的: 这个时候只有自己动手写...
  • 下拉列表如何自定义输入文字

    千次阅读 2016-10-07 17:06:47
    最近在做报表时,需要做一个下拉框,下拉框既可以选择已有的选项,最好还能自己输入新的的选项。
  • Android中的有个原生的下拉列表控件Spinner,但是这个控件有时候不符合我们自己的要求, 比如有时候我们需要类似windows 或者web网页中常见的那种下拉列表控件,类似下图这样的: 这个时候只有自己动手写...
  • 虽然微信小程序自带了onPullDownRefresh事件可以监听用户的下拉动作,并可以在回调函数中进行下拉刷新列表的...那么在这么个组件中,如何进行下拉刷新操作?在scroll-view 组件中自带了 bindscrolltoupper 事件,该...
  • 说到做下拉菜单,小伙伴们都知道直接使用Excel中的数据验证就可以实现,但是二级、三级,甚至更多级的下拉菜单,可能就有点蒙圈了。其实用Excel制作三级下拉菜单,一点都不难,它就跟我们平时复制粘贴一样简单!不...
  • <p><a href=... what changes need to be done in css or other files, please guide me script which is responsive ... </div>
  • 有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学...
  • DataTable QYu = myDataSet.Tables[0].DefaultView.ToTable(true, "_QYU"); //DataView view = new DataView(QYu); DataRow row = QYu.NewRow(); row["_QYU"] = "选区域";...AQYu.DataSource = Q
  • Android UI- PullToRrefresh自定义下拉刷新动画 本篇博文要给大家分享的是如何使用修改开源项目PullToRrefresh下拉刷新的动画,来满足我们开发当中特定的需求,我们比较常见的一种下拉刷新样式可能是以下...
  • iOS自定义控件之下拉列表按钮

    千次阅读 2014-11-30 10:53:19
    本文将介绍如何实现一个简单的下拉列表按钮,使读者能够更进一步掌握UIButton类和UITableView类的使用,了解非iOS系统自带控件的初始化方法,学习列表下拉、收起的动画效果,编写可重用的DropDownButton类,还可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 572
精华内容 228
关键字:

如何自定义下拉列表