2015年5月28日 星期四

for Extjs4 ,combobox彈出視窗如何比他未下拉時寬一點?

Extjs4的combobox是非常好用的contorl,除了可以用Tpl設定資料列出的樣式之外
還可以設定下拉選項彈出時比收起來時寬些:
托Extjs4之福,只要設定一下就可以了:
============================================
                                                {
                                                    xtype: 'combobox',
                                                    margin: '0 0 0 10',
                                                    width: 150,
                                                    fieldLabel: '分配機號',
                                                    labelSeparator: '              ',
                                                    labelWidth: 65,
                                                    store:storePos,
                                                     ...
                                                     ...
                                                     ...
                                                    matchFieldWidth: false,
                                                    queryMode: 'local',
                                                    listConfig: {
                                                        width:200,
                                                        getInnerTpl: function () {
                                                            return '<h4>{pos_code}</h4>{pos_name}'
                                                        }
                                                    }
                                                }
====================================================
很簡單吧?
加油了!!

2015年5月21日 星期四

for Extjs4 :如果只有store,而無定義model類別時,如何產生model物件?

有時combobx的store只是很暫時的東西.
懶的為這個暫時性的store定義model是人之常情
可是其中的選項是從server來的string array,而不是memory的話....

=================Ex====================
                                {
                                    xtype: 'combobox',
                                    name: 'xxx',
                                    queryMode: 'local',
                                    valueField: 'itemName',
                                    displayField: 'itemName',
                                    store: new Ext.data.ArrayStore({
                                        fields: ['itemName'],
                                        data: []
                                    }),
                                   ...
                                   ...
                                }
           //以下有個函數
      ,setSelectItems:(strArr){
               //這時如何是好?
      }
==========================================
事實上,只要有了store,也知道欄位(fields),就可以產生model了!!
================如下======================
    var rec = this.getForm().findField('xxx').getStore().model.create(
                  { itemName: stringOfThisItem }
                  ); 
                  //itemName 是上例的store的唯一欄位名稱
                     
                 this.getForm().findField('xxx').getStore().add(rec);
=====================================
以上,
加油了!!





2015年5月15日 星期五

in C#,16進制字串如何轉成unicode字元呢?

工具函數:
==================================================
public static byte[] StringToByteArray(String hex) {
            int NumberChars = hex.Length;
            byte[] bytes = new byte[NumberChars / 2];
            for(int i = 0; i < NumberChars; i += 2)
                bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
            return bytes;
        }
===================================================
但是轉出來會有Hi byte & Low byte順序問題,所以別忘了要反轉一下

                byte[] cbyte = StringToByteArray("5F5E");
                Array.Reverse(cbyte);
                var uniChar = Encoding.Unicode.GetString(cbyte);
來源在此

加油了

2015年5月13日 星期三

for EXTJS4 --To Scroll GRID by dragging

可以參考iscroll
ref : http://www.rahulsingla.com/blog/2011/11/extjs-and-iscroll-scrolling-ext-containers-on-touch-devices-ipad-iphone-etc-using-iscro
ref : http://cubiq.org/iscroll-4

如果不想這樣麻煩,參考以下的code.
solution from here

=============================================
                            listeners: {
                                itemmousedown: function (view, rec, item, idx, event) {

                                    var startX = event.getX();
                                    var startY = event.getY();

                                    var grid = view.up('gridpanel');
                                    var div = grid.getEl();
                                    var body = Ext.getBody();

                                    body.setStyle('cursor', '-moz-grabbing'); //doesn't work in 4.0.7+

                                    div.on('mousemove', function (e) {
                                        x = e.getX(), y = e.getY()
                                        grid.scrollByDeltaX(startX - x);
                                        grid.scrollByDeltaY(startY - y);
                                        startX = x
                                        startY = y
                                    });

                                    body.on('mouseup', function (e) {
                                        body.setStyle('cursor', 'default'); //doesn't work in 4.0.7+
                                        div.removeAllListeners();
                                        body.removeAllListeners();
                                    });

                                    body.on('mouseleave', function (e, tgt) {
                                        body.setStyle('cursor', 'default'); //doesn't work in 4.0.7+
                                        div.removeAllListeners();
                                        body.removeAllListeners();
                                    });
                                }
                            }
=======================================
 加油了!!