Extjs隨學(xué)筆記

          最近學(xué)習(xí)extjs,用extjs + struts2 + mysql5.0做了個(gè)CRUD及分頁(yè)的實(shí)例,代碼如下:
          創(chuàng)建表代碼如下:
          CREATE TABLE car_info (
              id         int(11) AUTO_INCREMENT NOT NULL,
              name       varchar(50) NULL,
              price      varchar(25) NULL,
              address    varchar(50) NULL,
              url        varchar(50) NULL,
              PRIMARY KEY(id)
          )
          GO

          ExtStart.jsp 代碼

          <%@ page language="java" contentType="text/html; charset=UTF-8"
              pageEncoding="UTF-8"%>
          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          <html>
          <head>
              <title>Introduction to Ext: Starter Page</title>

              <!-- Include YUI utilities and Ext: -->
              <script type="text/javascript" src="extjs/adapter/yui/yui-utilities.js"></script>
              <script type="text/javascript" src="extjs/adapter/yui/ext-yui-adapter.js"></script>
              <script type="text/javascript" src="extjs/ext-all-debug.js"></script>
              <script type="text/javascript" src="ExtStart.js"></script>

              <!-- Include Ext stylesheets here: -->
              <link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css">
              <link rel="stylesheet" type="text/css" href="extjs/resources/css/ytheme-vista.css">
              <link rel="stylesheet" type="text/css" href="ExtStart.css">
          </head>
          <body>
              <h1>Introduction to Ext: Starter Page</h1>

              <div id="grid-example" ></div>

          </body>
          </html>

          ExtStart.js代碼

          Ext.onReady(function() {
             
          function showUrl(value)
          {
              return "<a href=\""+value+"\" target=\"_blank\">" + value + "</a>";
          }

          /*
          //xml格式數(shù)據(jù)傳輸
          var ds = new Ext.data.Store(
                  {
                      proxy: new Ext.data.HttpProxy({url: "http://localhost:8080/myapp/carInfoList.action"}),
                      reader:new Ext.data.XmlReader(
                          {record:"row"},
                          ["id","name","price","address","url"]
                      )
                  }
              );
          */
          //Json格式數(shù)據(jù)傳輸
              var ds = new Ext.data.Store(
                  {
                      proxy : new Ext.data.HttpProxy({url:'http://localhost:8080/myapp/carInfoList.action',method:'post'}),
                      reader: new Ext.data.JsonReader({
                          root: "result"    ,
                          totalProperty: "count"},
                          ["id","name","price","address","url"]
                      )           
                  }
              );

          //數(shù)據(jù)添加
          function addData(){
              var addData = new Ext.form.FormPanel(
                  {
                      width: 300,
                      labelAlign: "right",
                      bodyStyle: 'padding:5px 5px 0',
                      height:160,
                      defaultType: "textfield",
                      animCollapse: true,
                      items: [
                            {fieldLabel: "請(qǐng)輸入名稱", name: "name", id: "name"},
                            {fieldLabel: "請(qǐng)輸入價(jià)格", name: "price", id: "price"},
                            {fieldLabel: "請(qǐng)輸入產(chǎn)地", name: "address", id: "address"},
                            {fieldLabel: "請(qǐng)輸入網(wǎng)址", name: "url", id: "url"}
                      ],
                      buttons: [
                             {text: "提交", handler: function(){
                                 var name = Ext.get("name");
                                 var price = Ext.get("price");
                                 var address = Ext.get("address");
                                 var url = Ext.get("url");
                                 if(name.dom.value == ""){
                                     Ext.MessageBox.alert("提示", "請(qǐng)輸入名稱!");
                                     name.highlight();
                                     name.focus();
                                     return false;
                                 }
                                 if(price.dom.value == ""){
                                     Ext.MessageBox.alert("提示", "請(qǐng)輸入價(jià)格!");
                                     price.highlight();
                                     price.focus();
                                     return false;
                                 }
                                 if(address.dom.value == ""){
                                     Ext.MessageBox.alert("提示", "請(qǐng)輸入產(chǎn)地!");
                                     address.highlight();
                                     address.focus();
                                     return false;
                                 }
                                 if(url.dom.value == ""){
                                     Ext.MessageBox.alert("提示", "請(qǐng)輸入網(wǎng)址!");
                                     url.highlight();
                                     url.focus();
                                     return false;
                                 }
                                
                                  Ext.MessageBox.wait("正在處理中,請(qǐng)稍候...","提示");
                                
                                 Ext.Ajax.request({
                                     url: "carInfoSave.action",
                                     success: function(response, options){
                                          var responseArray = Ext.util.JSON.decode(response.responseText);
                                          if(responseArray.success == true){
                                              Ext.MessageBox.hide();
                                              Ext.Msg.alert("提示", "信息保存成功!");
                                              addDatas.close();
                                              ds.load();
                                          }else{
                                              Ext.MessageBox.hide();
                                              Ext.Msg.alert("提示", "信息保存失敗!");
                                              addDatas.close();
                                          }    
                                      },
                                      failure: function(){
                                          Ext.MessageBox.hide();
                                          Ext.Msg.alert("提示", "信息保存失敗!");
                                          addDatas.close();
                                      },
                                      params: {name: name.dom.value, price: price.dom.value, address: address.dom.value, url: url.dom.value}
                                 });
                             }},
                             {text: "重填", handler: function(){
                                 Ext.get("name").dom.value = "";
                                 Ext.get("price").dom.value = "";
                                 Ext.get("address").dom.value = "";
                                 Ext.get("url").dom.value = "";
                             }}
                      ]
                  }       
              );
             
              var addDatas = new Ext.Window(
                      {
                          title: "數(shù)據(jù)添加",
                          width: 310,
                          height: 190,
                          items: [addData],
                          resizable:false,
                          modal: true,
                          maximizable: true
                      }
              );
              addData.show();
              addDatas.show();
          }

              var colModel = new Ext.grid.ColumnModel(
              [
                      {header: "編號(hào)",  width: 60, sortable: true, dataIndex: "id"},
                      {header: "名稱",  width: 120, sortable: true, dataIndex: "name"},
                      {header: "價(jià)格(萬(wàn))", width:120, sortable: true,  dataIndex: "price"},
                      {header: "產(chǎn)地", width: 120, sortable: true, dataIndex: "address"},
                      {header: "網(wǎng)址", width: 200, sortable: true, renderer: showUrl, dataIndex: "url"}
                  ]   
              );

              var grid = new Ext.grid.GridPanel(
                  {
                      id: "grid",
                      title: "grid-example",
                      store: ds,
                      height: 300,
                      cm: colModel,
                      selModel: new Ext.grid.RowSelectionModel(),
                      tbar:[{text: "添加", handler:function(){addData();}},
                            {text: "編輯", handler: function(){editData();}},
                            {text: "刪除", handler: function(){delData();}},
                            {text: "刷新", handler: function(){
                                ds.removeAll();
                                ds.reload();
                            }}],
                       bbar: new Ext.PagingToolbar({
                           pageSize: 2,
                           store: ds,
                           displayInfo: true,
                           displayMsg: "顯示第{0}條到第{1}條記錄,一共{2}條",
                           emptyMsg: "沒(méi)有記錄"
                       })   
                  }
              );
             
              function delData(){
                  //數(shù)據(jù)刪除
                  var selectedRow  = grid.getSelectionModel().getSelections();
                  var len = selectedRow.length;
                  if(len > 0){
                      var jsonStr = "{";
                      for(var i=0;i<len;i++){
                          if(i > 0){
                              jsonStr += ", id" + i + ":" + selectedRow[i].get("id");
                          }else{
                              jsonStr += "id" + i + ":" + selectedRow[i].get("id");
                          }   
                      }
                      jsonStr += "}";
                      Ext.MessageBox.confirm("提示", "是否要?jiǎng)h除所選的數(shù)據(jù)?", function(button, text){
                          if(button == "yes"){
                              Ext.MessageBox.wait("正在處理中,請(qǐng)稍候...","提示");
                              Ext.Ajax.request({
                                  url: "carInfoDel.action",
                                  success: function(response, options){
                                      var responseArray = Ext.util.JSON.decode(response.responseText);
                                      if(responseArray.success == true){
                                          Ext.MessageBox.hide();
                                          Ext.Msg.alert("提示", "信息刪除成功!");
                                          ds.load();
                                      }else{
                                          Ext.MessageBox.hide();
                                          Ext.Msg.alert("提示", "信息刪除失敗!");
                                      }    
                                  },
                                  failure: function(){
                                      Ext.MessageBox.hide();
                                      Ext.Msg.alert("提示", "信息刪除失敗!");
                                  },
                                  params: {json: jsonStr, jsonLen: len}
                              });
                          }
                      });
                  }else{
                      Ext.Msg.alert("提示", "請(qǐng)選擇要?jiǎng)h除的數(shù)據(jù)!");
                  }
              }
             
              function editData(){
                  //數(shù)據(jù)編輯
                  var selectedRow  = grid.getSelectionModel().getSelections();
                  var len = selectedRow.length;
                  if(len > 0){
                      if(len > 1){
                          Ext.Msg.alert("提示", "請(qǐng)選擇一行數(shù)據(jù)進(jìn)行編輯!");
                      }else{
                          var editData = new Ext.form.FormPanel(
                                  {
                                      width: 300,
                                      labelAlign: "right",
                                      bodyStyle: 'padding:5px 5px 0',
                                      height:160,
                                      defaultType: "textfield",
                                      animCollapse: true,
                                      items: [
                                            {fieldLabel: "請(qǐng)輸入名稱", name: "name", id: "name", value: selectedRow[0].get("name")},
                                            {fieldLabel: "請(qǐng)輸入價(jià)格", name: "price", id: "price", value: selectedRow[0].get("price")},
                                            {fieldLabel: "請(qǐng)輸入產(chǎn)地", name: "address", id: "address", value: selectedRow[0].get("address")},
                                            {fieldLabel: "請(qǐng)輸入網(wǎng)址", name: "url", id: "url", value: selectedRow[0].get("url")}
                                      ],
                                      buttons: [
                                             {text: "提交", handler: function(){
                                                 var name = Ext.get("name");
                                                 var price = Ext.get("price");
                                                 var address = Ext.get("address");
                                                 var url = Ext.get("url");
                                                 if(name.dom.value == ""){
                                                     Ext.MessageBox.alert("提示", "請(qǐng)輸入名稱!");
                                                     name.highlight();
                                                     name.focus();
                                                     return false;
                                                 }
                                                 if(price.dom.value == ""){
                                                     Ext.MessageBox.alert("提示", "請(qǐng)輸入價(jià)格!");
                                                     price.highlight();
                                                     price.focus();
                                                     return false;
                                                 }
                                                 if(address.dom.value == ""){
                                                     Ext.MessageBox.alert("提示", "請(qǐng)輸入產(chǎn)地!");
                                                     address.highlight();
                                                     address.focus();
                                                     return false;
                                                 }
                                                 if(url.dom.value == ""){
                                                     Ext.MessageBox.alert("提示", "請(qǐng)輸入網(wǎng)址!");
                                                     url.highlight();
                                                     url.focus();
                                                     return false;
                                                 }
                                                
                                                 Ext.MessageBox.wait("正在處理中,請(qǐng)稍候...","提示");
                                                
                                                 Ext.Ajax.request({
                                                     url: "carInfoSave.action",
                                                     success: function(response, options){
                                                          var responseArray = Ext.util.JSON.decode(response.responseText);
                                                          if(responseArray.success == true){
                                                              Ext.MessageBox.hide();
                                                              Ext.Msg.alert("提示", "信息保存成功!");
                                                              editDatas.close();
                                                              ds.load();
                                                          }else{
                                                              Ext.MessageBox.hide();
                                                              Ext.Msg.alert("提示", "信息保存失敗!");
                                                              editDatas.close();
                                                          }    
                                                      },
                                                      failure: function(){
                                                          Ext.MessageBox.hide();
                                                          Ext.Msg.alert("提示", "信息保存失敗!");
                                                          editDatas.close();
                                                      },
                                                      params: {id: selectedRow[0].get("id"), name: name.dom.value, price: price.dom.value, address: address.dom.value, url: url.dom.value}
                                                 });
                                             }},
                                             {text: "重填", handler: function(){
                                                 Ext.get("name").dom.value = "";
                                                 Ext.get("price").dom.value = "";
                                                 Ext.get("address").dom.value = "";
                                                 Ext.get("url").dom.value = "";
                                             }}
                                      ]
                                  }       
                              );
                             
                              var editDatas = new Ext.Window(
                                      {
                                          title: "數(shù)據(jù)編輯",
                                          width: 310,
                                          height: 190,
                                          items: [editData],
                                          resizable:false,
                                          modal: true,
                                          maximizable: true
                                      }
                              );
                              editData.show();
                              editDatas.show();
                      }   
                  }else{
                      Ext.Msg.alert("提示", "請(qǐng)選擇要編輯的數(shù)據(jù)!");
                  }   
              }

              grid.render('grid-example');
             
              grid.getSelectionModel().selectFirstRow();

              ds.load({params: {start: 0, limit: 2}});

          });

          后臺(tái)action的代碼就不貼出來(lái)了,有興趣的朋友可以自己研究下!

          posted on 2008-12-24 15:55 一代魔笛 閱讀(701) 評(píng)論(0)  編輯  收藏 所屬分類: Java技術(shù)

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆檔案(1)

          文章分類(3)

          文章檔案(3)

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 太和县| 自贡市| 宁陕县| 乌鲁木齐市| 罗城| 东阿县| 龙泉市| 汶上县| 昆山市| 那坡县| 玉门市| 万全县| 马公市| 大石桥市| 浙江省| 抚州市| 北碚区| 山阳县| 台南市| 巴青县| 玛纳斯县| 玉龙| 青神县| 安图县| 简阳市| 普陀区| 双流县| 喀喇沁旗| 大丰市| 赤峰市| 湘阴县| 贵南县| 无棣县| 洛浦县| 萍乡市| 堆龙德庆县| 克东县| 九江县| 奉贤区| 延吉市| 砀山县|