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});

});

你可能感兴趣的:(Ajax,xml,prototype,ext,IE)