`
shencanfeng
  • 浏览: 26191 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Ext实现比较完善的GridPanel

阅读更多
Ext.onReady(function(){
    Ext.BLANK_IMAGE_URL="ext/resources/images/default/s.gif";
function obj(phone,content,pid,udhi,dcs){
this.phone=phone;
this.content=content;
this.pid=pid;
this.udhi=udhi;
this.dcs=dcs;
this.recid=recid;
}
function createXMLDOM()
{
var xmlDoc = null;
//通过对象/属性检测法,判断是IE来是Mozilla
if (!window.DOMParser  && window.ActiveXObject)
{
  var arrVersions= ["MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0",
   "MSXML2.DOMDocument.3.0","MSXML2.DOMDocument", "Microsoft.XmlDoc"];
  for (var i=0; i < arrVersions.length; i++)
  {
try
{
  xmlDoc = new ActiveXObject(arrVersions[i]);
  return xmlDoc;            
}
catch (oError)
{
   //忽略,继续
}
  }          
  throw new Error("系统没有安装MSXML");   
 
   }else if(xmlDoc == null && document.implementation && document.implementation.createDocument)
   {    // Mozilla browsers have a DOMParser
  try{
xmlDoc = document.implementation.createDocument("","",null);
return xmlDoc;
}catch (ex){}
   }else 
   {
   throw   new  Error( " Your browser doesn't support an XML DOM object. " );
   }
}
if(window.DOMParser){
Document.prototype.loadXML = function(sXml){
var oParser= new DOMParser();
var _xmlDom = oParser.parseFromString(sXml, "text/xml");
while(this.firstChild){
   this.removeChild(this.firstChild);
}

for(var i=0;i<_xmlDom.childNodes.length;i++){
var oNewNode = this.importNode(_xmlDom.childNodes[i],true);
this.appendChild(oNewNode);
}
}
}

var userName="";
var xml="<?xml version='1.0' encoding='utf-8'?><root><operflag>0</operflag><dispatcherno>"+get_vars(parent.document,"dispatcherno")+"</dispatcherno></root>";
var xmlDoc = createXMLDOM();
xmlDoc.loadXML(xml);
    Ext.Ajax.request({ url:"cgi-bin/show_history_list.jsp",
   xmlData: xmlDoc,
   method:'POST',
   success: function(response,options){ userName = response.responseXML;
                                       var store=new Ext.data.Store(
{proxy: new Ext.data.PagingMemoryProxy(userName),
reader:new Ext.data.XmlReader({ record:'historystore'},               
['recordid','smstime', 'opertype', 'sendername','sendphonenum','addressee','addrphonenum','smscontent','smsstate'])});

var grid = new Ext.grid.GridPanel({
//sm:cb,
renderTo:"sendlist",
title:"历史库列表",
height:585,
width:855,
    cm : new Ext.grid.ColumnModel([
    new Ext.grid.CheckboxSelectionModel({singleSelect : false}),
    new Ext.grid.RowNumberer(),                                                               {dataIndex : 'recordid',header : '编号',hidden : true,sortable : true},
       {dataIndex : 'smstime',header : '操作时间',hidden : false,sortable : true,width:100},           
       {dataIndex : 'opertype',header : '操作类别',hidden : false,sortable : false,width:70,renderer:
     function(value){
  if(value=="0"){
return "发送";
}else if(value=="1"){
return "接收";
}else{
return "未知";
}
  }
   },
   {dataIndex : 'sendername',header : '发送方姓名',hidden : false,sortable : true,width:100},
   {dataIndex : 'sendphonenum',header : '发送方号码',hidden : false,sortable : true,width:100},
   {dataIndex : 'addressee',header : '接收方姓名',hidden : false,sortable : true,width:100},
   {dataIndex : 'addrphonenum',header : '接收方号码',hidden : false,sortable : true,width:100},
   {dataIndex : 'smscontent',header : '短信内容',hidden : false,sortable : true,width:180},
   {dataIndex : 'smsstate',header : '状态',hidden : false,sortable : true,width:100,renderer:
   function(value){
if(value=="0"){
return "等待发送";
}else if(value=="1"){
return "发送中";
}else if(value=="2"){
return "已发送";
}else if(value=="3"){
return "发送失败";
}else if(value=="4"){
return "已浏";
}else{
return "未知";
}
}
   }
   ]),
//tbar:toolbar,  //在表头增加各种控件
bbar:new Ext.PagingToolbar({
   pageSize:10,
   store:store,
   displayInfo:true,
   displayMsg:'显示第{0}条到第{1}条,一共有{2}条',
   emptyMsg:'没有记录'
  
  }),
stripeRows:true,//斑马线
store:store,
frame:true, //渲染表格面板
sm : new Ext.grid.CheckboxSelectionModel ({singleSelect : false,
                  onHdMouseDown : function(e, t)
  {
Ext.grid.CheckboxSelectionModel.prototype.onHdMouseDown.call(this, e, t);
var rows=grid.getSelectionModel().getSelections();
parent.arrayList.length=0;
var sid="";
var state="";
for(var i=0;i<rows.length;i++){
state=state+","+rows[i].get("smsstate");
sid+=","+rows[i].get("recordid");
parent.arrayList[parent.arrayList.length]={
recid:rows[i].get("recordid")
//phone:rows[i].get("addrphonenum"),
// content:rows[i].get("smscontent"),
// pid:rows[i].get("pid"),
// udhi:rows[i].get("udhi"),
// dcs:rows[i].get("dcs")
};
}
var states=state.split(",");
var s=false;

for(var i=0;i<states.length;i++){
if(i>0){
if(states[i]!="3"){
s=true;
break;
}
}
}
if(s)
{
parent.document.getElementById("againsend").disabled=true;
}
else
{
parent.document.getElementById("againsend").disabled=false;
}
parent.document.getElementById("smsidlist").value=sid;
if(state==""){
parent.document.getElementById("againsend").disabled=true;
}

  }
  }), //这里必须有
autoExpandColumn:2,
autoScroll:true,
viewConfig: { columnsText: '显示列', sortAscText: '升序', sortDescText: '降序',
sm: new Ext.grid.RowSelectionModel({ singleSelect: true })}
});

grid.on('render',function(){

    grid.getBottomToolbar().loading.hide();
});
parent.document.getElementById("againsend").disabled=true;

grid.getSelectionModel().on('rowselect', function(sm, rowIdx, r) {
//点击行触发事件函数
var rows=grid.getSelectionModel().getSelections();
//grid.CheckboxSelectionModel().clearSelections();
    });
parent.document.getElementById("flag").value=0;
parent.document.getElementById("smsidlist").value="";
parent.arrayList.length=0;
grid.on('cellclick', function(grid, row, col, e) {
                                                             if (col != 0) {
parent.arrayList.length=0;
var sid="";
     var rows = grid.getSelectionModel().getSelected();
sid=","+rows.get("recordid");
//Ext.MessageBox.alert(rows);
if(rows.get("smsstate")=="3"){
parent.document.getElementById("againsend").disabled=false;
}else{
parent.document.getElementById("againsend").disabled=true;
}
//parent.document.getElementsByName('byright')[0].src = "usershow.html?userno="+rows.data.userno;
//取消复选框选择
//grid.getSelectionModel().clearSelections();
//存ID值
parent.arrayList[parent.arrayList.length]={
recid:rows.get("recordid") //phone:rows.get("addrphonenum"),content:rows.get("smscontent"),pid:rows.get("pid"),udhi:rows.get("udhi"),dcs:rows.get("dcs")
};
parent.document.getElementById("smsidlist").value=sid;
     }
                                                         });

//增加单击事件,用于点击复选框触发
grid.addListener('rowclick', function rowclickFn(grid, rowindex, e){
//var girdcount=0;
parent.arrayList.length=0;
var sid="";
var state="";
var rows=grid.getSelectionModel().getSelections();
grid.getSelectionModel().each(function(rec){
parent.arrayList[parent.arrayList.length]={
recid:rec.get("recordid")
//phone:rec.get("addrphonenum"),content:rec.get("smscontent"),pid:rec.get("pid"),udhi:rec.get("udhi"),
// dcs:rec.get("dcs")
};
state=state+","+rec.get("smsstate");
sid=sid+","+rec.get("recordid");
});
var states=state.split(",");
var s=false;

for(var i=0;i<states.length;i++){
if(i>0){
if(states[i]!="3"){
s=true;
break;
}
}
}
if(s)
{
parent.document.getElementById("againsend").disabled=true;
}
else
{
parent.document.getElementById("againsend").disabled=false;
}
parent.document.getElementById("smsidlist").value=sid;
if(state==""){
parent.document.getElementById("againsend").disabled=true;
}
});
//增加双击事件,显示历史库信息
grid.addListener('rowdblclick', function rowdblclickFn(grid, rowindex, e){
var rows = grid.getSelectionModel().getSelected();
parent.document.getElementsByName("byright")[0].src= "historyshow.html?smsid="+rows.data.recordid;
});
store.load({params:{start:0, limit:10}});
},
   failure: function(response,options){ Ext.MessageBox.alert('错误'); },
  
   scope:this});

});
分享到:
评论

相关推荐

    ext.net 动态创建gridpanel

    总的来说,`newtpanel.aspx` 和 `newtpanel.aspx.cs` 文件展示了如何利用Ext.NET在服务器端和客户端代码中动态创建和管理GridPanel,以及如何将它们集成到各种窗口容器中,以实现灵活的数据展示和交互。这是一项关键...

    Ext.grid.GridPanel属性祥解

    ### Ext.grid.GridPanel属性详析 #### 一、Ext.grid.GridPanel概述 `Ext.grid.GridPanel`是ExtJS中用于展示表格数据的核心组件之一。它提供了丰富的配置选项和方法来帮助开发者灵活地控制表格的表现形式及功能。...

    Ext GridPanel 中实现加链接操作

    ### Ext GridPanel 中实现加链接操作 在前端开发领域中,Ext JS 是一款非常流行的 JavaScript 框架,用于构建企业级的 Web 应用程序。Ext GridPanel 是该框架中的一个重要组件,常用于展示表格数据。本文将详细介绍...

    Ext.net实现GridPanel拖动行、上移下移排序功能DEMO

    对于GridPanel中拖动选中行排序的实现,网上有不少ExtJs实现的例子,但是没有找到使用Ext.net实现的,正好最近有个需求要使用,干脆来写一个。 DEMO功能说明: 1、拖动GridPanel选中行到新位置排序。 2、在拖动结束...

    Ext实现GridPanel内嵌行内嵌表格(RowExpander)

    在本文中,我们将深入探讨如何使用ExtJS库中的RowExpander插件来实现在GridPanel中内嵌行内的表格。ExtJS是一个强大的JavaScript框架,它提供了丰富的组件和功能,用于构建复杂的Web应用程序。RowExpander插件是...

    Ext的gridpanel控件二次加载问题

    2. 在需要时动态加载和卸载GridPanel,通过Ext JS的容器系统实现。 3. 如果数据更新频繁,可以考虑使用Store的buffered rendering特性,减少内存占用和渲染压力。 4. 对于复杂的配置,可以将它们分离到单独的配置...

    ext gridpanel 跨行

    "ext gridpanel 跨行"这个主题主要涉及到在GridPanel中实现单元格或行的跨行显示,这在展示复杂数据或需要组合信息时非常有用。 首先,让我们深入理解什么是GridPanel。在Ext JS中,GridPanel是一个表格视图,它...

    EXT GridPanel获取某一单元格的值

    在EXT GridPanel中,获取某一单元格的值是常见的操作,特别是在实现自定义事件处理或数据验证时。 在提供的代码段中,我们看到一个监听`cellclick`事件的例子,这是EXT GridPanel中用于捕获用户点击单元格时的事件...

    Ext2.2.GridPanel分页处理+dwrproxy(js对象和json两种数据)

    本话题将深入探讨如何在Ext2.2中使用GridPanel进行分页处理,并结合DWR(Direct Web Remoting)代理来实现数据的异步加载。我们将关注两个数据格式:JavaScript对象(JS对象)和JSON。 首先,Ext2.2的GridPanel是...

    EXTJSEXT实例GridPanel.

    var grid = new Ext.grid.GridPanel({ store: store, cm: cm, renderTo: Ext.getBody() // 渲染到页面的body元素 }); ``` 此外,EXTJS的GridPanel还支持许多高级特性,例如: - **行编辑**: 可以通过添加...

    Ext 实现自定义控件

    在EXT JS中,自定义控件是通过继承EXT的基础组件并对其进行扩展来实现的。这允许开发者创建符合特定需求的个性化组件,同时充分利用EXT提供的强大功能。以下将详细讲解两种常见的自定义EXT控件的方法: 1. **重载 `...

    ext form gridpanel

    "Ext Form GridPanel"是Ext JS库中的一个重要组件,它结合了表格(Grid)和表单(Form)的功能,提供了一种强大而灵活的方式来显示和编辑数据。在Web应用程序开发中,这种组件常用于数据录入和展示,尤其适用于处理...

    基于EXT2.0.2表格间数据拖拽

    实现拖拽功能的关键在于扩展EXT的GridPanel类,添加DragDrop支持。这通常涉及以下几个步骤: 1. **初始化DragDrop**:为每个Grid创建一个DragSource和DropTarget实例。DragSource代表可以被拖动的数据源,而...

    Ext3.2的TreePanel和GridPanel的分页与Hibernate的分页功能的影射

    目的:Ext框架的开发中,最常用的有GridPanel控件,以及TreePanel控件。在使用表格的分页功能时,我们把该控件的start与limits参数与Hibernate的分页功能影射,从页实现了动态的分页效果;而TreePanel的更新也是一个...

    Ext表格获取后台数据

    ExtJS是一款基于JavaScript的RIA(Rich Internet Application,富互联网应用)框架,它提供了许多强大的功能和组件,其中之一就是表格组件Ext.grid.GridPanel。 Ext.grid.GridPanel是一个功能强大的表格控件,它...

    Ext 中实现Excel导出

    根据给定的信息,本文将详细解释如何在Ext框架中实现Excel导出功能。这涉及到从前台界面设计到后端数据处理的多个环节。下面将依次介绍相关知识点。 ### 一、Ext简介 Ext是一个用于构建交互式Web应用程序的...

    Ext Grid表格的自动宽度及高度的实现

    在探讨“Ext Grid表格的自动宽度及高度的实现”这一主题时,我们深入解析如何在Ext JS框架下,利用其强大的Grid组件自适应容器尺寸,实现表格宽度与高度的自动调整。这一技术对于构建响应式、用户友好的界面至关重要...

    ext的表格行编辑(roweditor)实现(c#)

    总结起来,实现EXT JS的表格行编辑(roweditor)功能,需要结合C#后端构建数据接口,前端使用EXT JS的GridPanel、RowEditing插件以及相关的配置选项。通过监听和处理事件,实现数据的双向绑定,达到直观且高效的表格...

    Ext实现分页查询,前台

    本示例主要介绍了如何使用Ext.js这个JavaScript框架来实现前端的分页查询功能。 首先,创建一个名为`resource`的数据存储(Store),它负责从服务器获取数据。这里的`Store`对象定义了字段(fields)、数据源URL...

    Ext4.1.1a实现的gridePanel导出Excel

    本文将深入探讨如何在Ext4.1.1a版本中实现GridPanel数据导出到Excel的功能,这对于数据管理和分析尤其有用。本文档会详细讲解实现这一功能的关键步骤和技术要点。 首先,`Ext4.1.1a`是ExtJS的一个版本,它提供了...

Global site tag (gtag.js) - Google Analytics