ExtJs基础知识总结:自定义弹窗和ComboBox自动联想加载(四)
概述
Extjs弹窗可以分为消息弹窗、对话框,这些弹窗的方式ExtJs自带的Ext.Msg.alert就已经可以满足简单消息提示,但是相对复杂的提示,比如如何将Ext.grid.Panel的控件显示嵌套到widget.window,然后随着widget.window的show方法展示到页面上哪?另外一个就是ExtJs中的Combobox下拉控件,如何做到手动输入,自动联想手动输入的内容进行查询?
一、针对自定义弹窗
通过window显示自定义弹窗,下面有几种方案思路
思路一、直接将gridpandel填充到widget.window对应的Items
代码如下:
var InvoiceItemGrid = Ext.create('Ext.grid.Panel', {
forceFit: false,
autoHeight: true,
autoScroll: true,
frame: true,
split: false,
layout: "fit",
height:document.documentElement.clientHeight,
margin: ,
store: PrecStore,
loadMask: { msg: '数据加载中...' },
columnLines: true,
//dockedItems: [PTxtInfo],
//selType: "checkboxmodel",
selModel: {
mode: "multi",//multi,simple,single;默认为多选multi
checkOnly: false,//如果值为true,则只用点击checkbox列才能选中此条记录
allowDeselect: true,//如果值true,并且mode值为单选(single)时,可以通过点击checkbox取消对其的选择
},
viewConfig: {
stripeRows: true,//在表格中显示斑马线
enableTextSelection: true //可以复制单元格文字 "GGXH", "XMSL", "XMDJ", "XMJE", "SL", "SE", "SPBM", "TaxItem"],
},
bbar: { xtype: "pagingtoolbar", inputItemWidth: , store: PrecStore, displayInfo: true },
columns: [
{ text: "Id", width: , dataIndex: "Id", hidden: true },
{ text: "商品名称", width: , dataIndex: "XMMC" },
{ text: "单位", width: , dataIndex: "DW" },
{ text: "规格型号", width: , dataIndex: "GGXH" },
{ text: "数量", width: , dataIndex: "XMSL" },
{ text: "项目单价", width: , dataIndex: "XMDJ" },
{ text: "项目金额", width: , dataIndex: "XMJE" },
{ text: "税额", width: , dataIndex: "SE" },
{ text: "税率%", width: , dataIndex: "SL" },
{ text: "税目编码", width: , dataIndex: "SPBM" },
]
});
//主窗体
var WindItem= Ext.create('widget.window', {
title: '发票明细',
closable: true,
closeAction: 'hide',
modal: true,
frame: true,
layout: 'fit',
width: ,
minWidth: ,
height: ,
layout: {
type: 'border',
padding:
},
items: [InvoiceItemGrid]
});
显示的结果截图如下:
结果分析:grid的标题也没显示出来,而且随着窗体大小的拉伸,内容不会全部显示。
思路二、直接将gridpandel填充到tabpanel的Items中,然后tabpanel放到widget.window对应的Items
代码如下:
var WindItem= Ext.create('widget.window', {
title: '发票明细',
closable: true,
closeAction: 'hide',
modal: true,
frame: true,
layout: 'fit',
width: ,
minWidth: ,
height: ,
layout: {
type: 'border',
padding:
},
items: [{
region: 'center',
xtype: 'tabpanel',
items: InvoiceItemGrid
}]
});
显示的结果截图如下:
结果分析:grid上面的那个蓝色方块,是A标签。ExtJs中的tabpanel根据grid自动生成,显然也不是最理想结果;
思路三、直接将gridpandel填充到From的Items中,然后From放到tabpanel的Items中,然后tabpanel放到widget.window对应的Items
代码如下:
var DataFrom = Ext.create('Ext.form.Panel', {
hidden: true,
bodyPadding: ,
width: ,
header: true,
layout: 'fit',
defaults: {
anchor: '100%'
},
defaultType: 'textfield',
items: [
InvoiceItemGrid
],
buttons: [{
text: '关闭',
handler: function () {
WindItem.close();
}
}]
}); var WindItem= Ext.create('widget.window', {
title: '发票明细',
closable: true,
closeAction: 'hide',
modal: true,
frame: true,
layout: 'fit',
width: ,
minWidth: ,
height: ,
layout: {
type: 'border',
padding:
},
items: [{
region: 'center',
xtype: 'tabpanel',
items: DataFrom
}]
});
显示的结果截图如下:
结果分析:显然这种方式相对更好点,思路3是根据思路2而来,思路2又是根据思路1而来,所以好的思路还是需要不断优化和总结。
二、Combobox手动输入联想加载
所谓自动联想加载是指Combobox允许手动输入,根据手动输入的内容系统自动加载和输入内容相关联的内容,Combobox设置为可编辑的时候,每次手动输入ExtJs自动回到后台请求数据,传递参数query作为查询内容,实现的效果如下:
手动输入彩电,Combobox下来数据源变动如下
ExtJs代码如下
//定义的数据源
var ProductLine = new Ext.data.Store({
fields: ["className", "classID"],
autoLoad: true,
proxy: {
type: "ajax",
actionMethods: { read: "POST" },
url: '/urlOrderCV/GetAllProductLine',
reader: {
type: 'json',
rootProperty: 'Data',
totalProperty: 'TotalCount'
}
}
});
///定义的下来列表Combobox
{
xtype: "combobox",
store: ProductLine,
displayField: "className", //显示出来的是name
valueField: "classID", //值是id
fieldLabel: "科级名称", //label
editable: true, //不可编辑
minChars: ,
id: "classname", //id
labelWidth: ,
width:
}
后台Action的伪代码如下
public ActionResult GetAllProductLine (string query)
{ if (string.IsNullOrEmpty(query))
{
//查询全部
}
else
{ //更加query查询部分
}
}
ExtJs基础知识总结:自定义弹窗和ComboBox自动联想加载(四)的更多相关文章
- android 在自定义的listview(有刷新加载项)列表中,数据过少时不能铺满整个屏幕时,header和footer同时显示问题
android 在自定义的listview(有刷新加载项)列表中,数据过少时,当刷新时,加载项也会显示,这是很头疼的一个问题,查阅了一些资料,总结了一个比较不错的方法: 原来代码: @Overrid ...
- 使用MJRefresh自定义下拉刷新,上拉加载动画
有时候我们需要自己设置下拉刷新,上拉加载动画的实现,这里主要是记录下使用MJRefresh自定义下拉刷新,上拉加载动画..... 下拉刷新我们只需要继承MJRefreshGifHeader即可: 实现 ...
- ExtJS基础知识总结:自定义日历和ComboBox控件(二)
概述 1.ExtJS 5不支持日期选择框中只选择年月,为了满足ExtJs5可以实现选择年月的功能,查询网上资料,整理出来了相应的处理方式,最终实现的效果如下图: 2.ExtJS 控件丰富,如果需要实现 ...
- ExtJS基础知识总结:常用控件使用方式(一)
概述 最近一直在做相关ExtJs方面的项目,遇到了ExtJs使用方面的一系列问题,现在将使用技巧做个记录汇总,以便于下次能够快速使用.以下都是ExtJs控件的常用方法,做简单汇总,俗话说,好记星不如烂 ...
- java基础知识:自定义注解
转自 深入了解注解 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解的作用就是负责注解其他注解.J ...
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
AsyncTask使用方法详情:http://www.cnblogs.com/zzw1994/p/4959949.html 下拉开源框架PullToRefresh使用方法和下载详情:http://ww ...
- 18-Angular 自定义模块以及配置路由模块懒加载
新建项目,新建几个子模块,实现懒加载 用户.商品.文章 新建这三个模块 创建模块的时候后面加 --routing.会自动生成模块的路由文件 先删掉. 重新创建模块带routing 这样就会生成两个文件 ...
- ExtJs基础知识总结:Dom、IFrame和TreePanel、TabPanel(三)
概述 ExtJs是另外一种操作封装JavaScript的类库与Jquery同类.所以对Dom的操作也是支持的,比如修改Div内Html内容等操作.有几个问题需要思考下: 1.ExtJs也支持IFram ...
- Redis基础知识之——自定义封装单实例和普通类Redis
一.普通Redis实例化类: class MyRedis { private $redis; public function __construct($host = '121.41.88.209', ...
随机推荐
- 引用js或css后加?v= 版本号的用法
<span style="font-size:14px;">css和js带参数(形如.css?v=与.js?v= 或 .css?version=与.js?version ...
- Spring Boot中的事务管理
原文 http://blog.didispace.com/springboottransactional/ 什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合 ...
- 移动端自适应:flexible.js可伸缩布局使用
http://caibaojian.com/flexible-js.html 阿里团队开源的一个库.flexible.js,主要是实现在各种不同的移动端界面实现一稿搞定所有的设备兼容自适应问题. 实现 ...
- spring jdbc 查询结果返回对象、对象列表
首先,需要了解spring jdbc查询时,有三种回调方式来处理查询的结果集.可以参考 使用spring的JdbcTemplate进行查询的三种回调方式的比较,写得还不错. 1.返回对象(queryF ...
- 修改context 和 enforce?
http://jingyan.baidu.com/article/8ebacdf0cce84849f75cd57b.html 可以彻底的 关闭 selinux, selinux的配置文件 在 /etc ...
- 日期格式转换 java 2016-09-03T00:00:00.000+08:00
/** * 日期格式转换yyyy-MM-dd'T'HH:mm:ss.SSSXXX (yyyy-MM-dd'T'HH:mm:ss.SSSZ) TO yyyy-MM-dd HH:mm:ss * @ ...
- Excel——使用OFFSET、MATCH、COUNTA实现二级菜单
如图所示,接下来提供两种办法实现: 1.将A.B.C.D定义为名称NAME. 2.设置一级菜单单元格数据有效性为NAME. 3.设置二级菜单格数据有效为: =OFFSET($A$1,MATCH($A6 ...
- javac -encoding utf8 in linux
由于另外负责编码的同事用的是utf-8,我用的默认的编码格式gbk,在提交代码时,为了迁就他,我打算把格式用工具转成utf-8. 转化成果后,然后在make一下,发现javac -encoding u ...
- Ubuntu上Grafana 监控 Docker的技巧
导读 Grafana 是一个有着丰富指标的开源控制面板.在可视化大规模测量数据的时候是非常有用的.根据不同的指标数据,它提供了一个强大.优雅的来创建.分享和浏览数据的方式. 它提供了丰富多样.灵活的图 ...
- Java内部类与外部类的那些事
昨天去笔试的时候遇到了Java的内部类的创建方式与访问权限的问题,我不懂,没写,故今天起来特意去试验一下,就有了这篇总结性的文章. Java中的内部类又分为非静态内部类(匿名内部类也是非静态的内部类) ...