概述

  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自动联想加载(四)的更多相关文章

  1. android 在自定义的listview(有刷新加载项)列表中,数据过少时不能铺满整个屏幕时,header和footer同时显示问题

    android  在自定义的listview(有刷新加载项)列表中,数据过少时,当刷新时,加载项也会显示,这是很头疼的一个问题,查阅了一些资料,总结了一个比较不错的方法: 原来代码: @Overrid ...

  2. 使用MJRefresh自定义下拉刷新,上拉加载动画

    有时候我们需要自己设置下拉刷新,上拉加载动画的实现,这里主要是记录下使用MJRefresh自定义下拉刷新,上拉加载动画..... 下拉刷新我们只需要继承MJRefreshGifHeader即可: 实现 ...

  3. ExtJS基础知识总结:自定义日历和ComboBox控件(二)

    概述 1.ExtJS 5不支持日期选择框中只选择年月,为了满足ExtJs5可以实现选择年月的功能,查询网上资料,整理出来了相应的处理方式,最终实现的效果如下图: 2.ExtJS 控件丰富,如果需要实现 ...

  4. ExtJS基础知识总结:常用控件使用方式(一)

    概述 最近一直在做相关ExtJs方面的项目,遇到了ExtJs使用方面的一系列问题,现在将使用技巧做个记录汇总,以便于下次能够快速使用.以下都是ExtJs控件的常用方法,做简单汇总,俗话说,好记星不如烂 ...

  5. java基础知识:自定义注解

    转自 深入了解注解 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解的作用就是负责注解其他注解.J ...

  6. 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)

    AsyncTask使用方法详情:http://www.cnblogs.com/zzw1994/p/4959949.html 下拉开源框架PullToRefresh使用方法和下载详情:http://ww ...

  7. 18-Angular 自定义模块以及配置路由模块懒加载

    新建项目,新建几个子模块,实现懒加载 用户.商品.文章 新建这三个模块 创建模块的时候后面加 --routing.会自动生成模块的路由文件 先删掉. 重新创建模块带routing 这样就会生成两个文件 ...

  8. ExtJs基础知识总结:Dom、IFrame和TreePanel、TabPanel(三)

    概述 ExtJs是另外一种操作封装JavaScript的类库与Jquery同类.所以对Dom的操作也是支持的,比如修改Div内Html内容等操作.有几个问题需要思考下: 1.ExtJs也支持IFram ...

  9. Redis基础知识之——自定义封装单实例和普通类Redis

    一.普通Redis实例化类: class MyRedis { private $redis; public function __construct($host = '121.41.88.209', ...

随机推荐

  1. CSS3 Animation 帧动画 steps()

    @keyframes fn{ 0%{} 100%{} } CSS3的Animation有八个属性 animation-name :动画名 fn animation-duration:时间 1s ani ...

  2. git文件迁移到新架构

    环境: ubuntu16.04 代码托管地址:git.oschina.net 迁移原因: git上某工程是一堆静态页面html,因为在ubuntu下缺乏git图形客户端,想使用eclipse集成的gi ...

  3. 漫步ASP.NET MVC的处理管线

    ASP.NET MVC从诞生到现在已经好几个年头了,这个框架提供一种全新的开发模式,更符合web开发本质.你可以很好的使用以及个性化和扩展这个框架,但这需要你对它有足够的了解.这篇文章主要从整体角度总 ...

  4. sublime 中 pyv8 binary 报错怎么处理?

    ,sublime text 在安装插件的时候,尤其是Emmet的时候,经常会报一个错误--please wait a bit whilePyV8 binary is being downloaded, ...

  5. KALI Linux problems & Study Red Hat | Ubuntu

    Problem When you ask some website with https head.you may met the problem  secure connection failed ...

  6. GNU Radio Radar Toolbox

    GNU Radio Radar Toolbox Install guide Change to any folder in your home directory and enter followin ...

  7. PJAX的实现与应用

    一.前言 web发展经历了一个漫长的周期,最开始很多人认为Javascript这们语言是前端开发的累赘,是个鸡肋,那个时候人们还享受着从一个a链接蹦 到另一个页面的web神奇魔术.后来随着JavaSc ...

  8. webservice 测试窗体只能用于来自本地计算机的请求

    Question: WebService部署成站点之后,如果在本地测试webservice可以运行,在远程却显示“测试窗体只能用于来自本地计算机的请求”或者"The test form is ...

  9. axios基本用法

    vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios,前一段时间用了一下,现在说一下它的基本用法. 首先就是引入axios,如果你使用es6,只需要安装axios ...

  10. PHP代码 如何网页获取用户的openid

    public function getOpenid($appid, $appsecret) { $SERVER_NAME = $_SERVER['SERVER_NAME']; $REQUEST_URI ...