szhswl
          宋針還的個人空間

          Grid的分頁必須依靠服務(wù)端(Server Side)來劃分好每一頁的數(shù)據(jù)才可以完成。

          本例中的服務(wù)端語言是PHP,數(shù)據(jù)庫是MySQL,用來導(dǎo)出一些隨機的數(shù)據(jù)。下列腳本的作用是,獲取我們想要的數(shù)據(jù),同時這些數(shù)據(jù)是已分好頁的數(shù)據(jù)。分頁的參數(shù)是由Page Toolbar傳入的變量limit和start所決定的。

          
          $link = mysql_pconnect("test-db.vinylfox.com", "test", "testuser")
          or die("Could not connect");
          mysql_select_db("test") or die("Could not select database");
          $sql_count = "SELECT id, name, title, hire_date, active FROM random_employee_data";
          $sql = $sql_count . " LIMIT ".$_GET['start'].", ".$_GET['limit'];
          $rs_count = mysql_query($sql_count);
          $rows = mysql_num_rows($rs_count);
          $rs = mysql_query($sql);
          while($obj = mysql_fetch_object($rs))
          {
          $arr[] = $obj;
          }
          Echo $_GET['callback'].'({"total":"'.$rows.'","results":'.json_encode($arr).'})';
          
          

          由于每個后臺開發(fā)的環(huán)境都不盡相同,所以這里的服務(wù)端代碼就不細(xì)究了。

          怎么做一個分頁的Grid

          本例采用的是ScriptTagProxy,原因是 范例代碼 和 服務(wù)端代碼 不是在同一個服務(wù)器上(譯注:即“跨域”),而大多數(shù)的情況是,在同一個服務(wù)器上得到數(shù)據(jù),直接用HttpProxy就可以了。

          使用DataStore與平時唯一不同的地方,便是需要設(shè)置totalProerty屬性。本例中,我們從服務(wù)端的腳本計算出“total”這個值,告訴DataStore總共有多少個記錄,這里指的是所有的記錄數(shù)。

          
          var ds = new Ext.data.Store({
          proxy: new Ext.data.ScriptTagProxy({
          url: 'http://www.vinylfox.com/yui-ext/examples/grid-paging/grid-paging-data.php'
          }),
          reader: new Ext.data.JsonReader({
          root: 'results',
          totalProperty: 'total',
          id: 'id'
          }, [
          {name: 'employee_name', mapping: 'name'},
          {name: 'job_title', mapping: 'title'},
          {name: 'hire_date', mapping: 'hire_date', type: 'date', dateFormat: 'm-d-Y'},
          {name: 'is_active', mapping: 'active'}
          ])
          });
          
          

          分頁欄Toolbar

          這里加入一個分頁欄到Grid的面板中,--差不多完成嘍。

          
          var gridFoot = grid.getView().getFooterPanel(true);
          var paging = new Ext.PagingToolbar(gridFoot, ds, {
          pageSize: 25,
          displayInfo: true,
          displayMsg: 'Displaying results {0} - {1} of {2}',
          emptyMsg: "No results to display"
          });
          
          

          最后傳入startlimit參數(shù)以初始化數(shù)據(jù)。

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

          花時間較多的地方是,在后臺如何生成數(shù)據(jù),以配合Grid的運作,一旦這些工作OK后,分頁Grid再不是一件難事了。

          本文轉(zhuǎn)自:http://www.ajaxjs.com/yuicn/article.asp?id=20076012



          ---------------------------------------------------------------------------------------------------------------------------------
          說人之短,乃護己之短。夸己之長,乃忌人之長。皆由存心不厚,識量太狹耳。能去此弊,可以進德,可以遠(yuǎn)怨。
          http://www.aygfsteel.com/szhswl
          ------------------------------------------------------------------------------------------------------ ----------------- ---------
          posted on 2007-12-08 19:07 宋針還 閱讀(612) 評論(0)  編輯  收藏 所屬分類: EXT
          主站蜘蛛池模板: 紫阳县| 克拉玛依市| 英德市| 昌平区| 堆龙德庆县| 丹巴县| 酉阳| 鞍山市| 上栗县| 武陟县| 光山县| 西峡县| 武乡县| 塘沽区| 杂多县| 宣威市| 永胜县| 米易县| 梧州市| 绥棱县| 武山县| 蓬安县| 垦利县| 朝阳市| 邵阳市| 松原市| 双流县| 亳州市| 噶尔县| 汾阳市| 康定县| 图木舒克市| 合肥市| 浪卡子县| 霍林郭勒市| 锦屏县| 通道| 西和县| 静宁县| 平凉市| 遵义县|