天天看點

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

個人認為,XTemplate是ExtJs中最靈活的用來顯示資料的元件,有點類似aspx中的Repeater控件,顯示資料的模闆完全可以由使用者以html方式來定制.

先給一個官方的靜态示例(稍微改了下),代碼并不複雜,關鍵的地方,我已經注釋了

 1

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

    <script type="text/javascript">

 2

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料
ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

        Ext.onReady(function() 

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

{

 3

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

 4

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料
ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

            var data = 

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

 5

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

                name: 'Jack Slocum',

 6

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

                title: 'Lead Developer',

 7

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

                company: 'Ext JS, LLC',

 8

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

                email: '[email protected]',

 9

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

                address: '4 Red Bulls Drive',

10

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

                city: 'Cleveland',

11

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

                state: 'Ohio',

12

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

                zip: '44102',

13

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

                drinks: ['Red Bull', 'Coffee', 'Water'],

14

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

                kids: [

15

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料
ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料
ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

{ name: 'Sara Grace', age: 3 },

16

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料
ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料
ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

{ name: 'Zachary', age: 2 },

17

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料
ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料
ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

{ name: 'John James', age: 0 }

18

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

]

19

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

            };

20

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

21

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

            var tpl = new Ext.XTemplate(

22

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

'<p>Name: {name}</p>',

23

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

'<p>Title: {title}</p>',

24

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

'<p>Company: {company}</p>',

25

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

'<p>[Kids:] ',

26

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

'<tpl for="kids">',//表明這裡循環讀取kids節的資料

27

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

'<p>  {name}</p>',

28

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

'</tpl></p>',

29

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

'<p>[Drinks:] ',

30

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

'<tpl for="drinks">',

31

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

'<p>  {#}.{.}</p>', //表明這裡循環讀取drinks節的資料,當資料沒有屬性名稱時,用"."代表資料

32

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

'</tpl></p>'

33

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

);

34

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

            tpl.overwrite(Ext.getBody(), data);

35

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

36

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

        });

37

ExtJs學習筆記(21)-使用XTemplate結合WCF顯示資料

    </script>   

運作結果圖:

接下來我們看看如何跟伺服器端的WCF做互動

1.首先定義一個用于資訊傳輸的實體類(實際開發中,可以是任何可序列化的class,包括linq to sql生成的類)

2.建立一個"啟用了Ajax的WCF服務"

a.同時将svc手動修改一下,注意下面的高亮部分要手動加上去:

<%@ ServiceHost Language="C#" Debug="true" Service="Ajax_WCF.MyService" CodeBehind="MyService.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory"%>

b.web.config中,也參考下面修改

 <behavior name="Ajax_WCF.MyServiceAspNetAjaxBehavior">

      <webHttp />

      <!--<enableWebScript/>-->

    </behavior>

c.在wcf中增加一個方法,代碼如下:

這裡為了簡單起見,直接new并初始化了一個Person對象,然後傳回為JSON格式

3.最後修改一下前面靜态頁的代碼,完整頁面代碼如下:

解釋一下:利用ExtJs的Ajax對象,請求MyServices.svc/GetPerson方法,擷取Json字元串,其它地方完全一樣,需要注意的是:

a.傳回的字元串,需要用Ext.Util.JSON.decode轉換成JSON對象

b.為了顯示出loading加載效果,在調用Ajax的Request之前,用demo.com.innerHTML和demo.com.className先把目标div設定成"加載中"的字樣

運作效果如下:

轉載請注明來自"菩提樹下的楊過"http://www.cnblogs.com/yjmyzz/archive/2008/09/09/1287767.html

這回運作時,增加了"資料加載中"的效果,加載成功後與剛才的靜态示例顯示結果完全相同

繼續閱讀