2018年5月23日 星期三

老生常談--file upload前的image preview

以前是做過了,可是沒抄錄下才,現在又再找一次,正真是「碼到用時方恨少」
===========================================
           ...
           ....
           ....
                {
                            xtype: 'filefield',
                            anchor: '100%',
                            //colspan: 3,
                            width: 298,
                            name: 'image',
                            readOnly:true,
                            listeners: {
                                change: {
                                    fn: me.onFilefieldChange,
                                    scope: me
                                }
                            }
                        }
......
....
....
    onFilefieldChange: function (filefield, value, eOpts) {
        var me = this;
        var file = filefield.fileInputEl.dom.files[0];
            var reader = new FileReader();
            reader.onload = function (e) {
                me.setPanelImg(e.target.result);
            }
            reader.readAsDataURL(file);
    },
    setPanelImg: function (imgUrl) {
      var me=this;
        var pnlContainImgPnl =me.down('#pnlContainImage');
        pnlContainImgPnl.removeAll();
        var pnl4Img = Ext.create('Ext.panel.Panel',
            {
                autoScroll: true,
                html: '<img src="'+imgUrl+'"/>',
            });
        pnlContainImgPnl.add(pnl4Img);
        pnlContainImgPnl.updateLayout();
    }
===========================================
就將啦

2018年5月21日 星期一

如何把参數帶進 Task之中

example:
======================
int i=0;
 for (;i<10;i++) {
               tasks.Add(Task.Run(() => {
                    Console.WriteLine("i="+i);
             }));
 }
 Task t = Task.WhenAll(tasks.ToArray());
 t.Wait();
==========================
上例,task的run是在t.Wait時才呼叫的
此時 i已經是10,而不是各別的0....10
要怎麼把i用參數的方式帶進task呢?
這時要把Task.Run....改一下,才可以帶参數
=========================
            int i = 0;
            for (; i<files.Count; i+=100) {
                tasks.Add(Task.Factory.StartNew((Object obj) =>{
                   var data = (dynamic)obj;
                   int i2 = (int)data.iX;
                  Console.WriteLine("i="+i2);
               }, new { iX = i}));//{可以串很多個参數,x=i,y=5,z=7.........)
            }
=========================
這樣外面的變數就可以傳入了
更詳細的介紹請參考這裡