卡拉奇

我想回老家休息!还是家里的饭饭好吃!
posts - 19, comments - 18, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

公告

2011年7月29日

ext4默认都是没办法选文字复制的,EXT3可以很快解决这个问题,可是EXT4找了好久都没有找到。

把官方都搜索遍也没有;

第一感觉是样式改下应该可以吧,.x-selectable, .x-selectable *  {-moz-user-select:text!important;-khtml-user-select:text!important;-webkit-user-select:text!important;}  

还是一样的不行;

第二找到一代码

Ext.view.TableChunker.metaRowTpl = [
            '<tr class="' + Ext.baseCSSPrefix + 'grid-row {addlSelector} {[this.embedRowCls()]}" {[this.embedRowAttr()]}>',
                '<tpl for="columns">',
                    '<td class="{cls} ' + Ext.baseCSSPrefix + 'grid-cell ' + Ext.baseCSSPrefix + 'grid-cell-{columnId} {{id}-modified} {{id}-tdCls} {[this.firstOrLastCls(xindex, xcount)]}" {{id}-tdAttr}><div class="' + Ext.baseCSSPrefix + 'grid-cell-inner ' + Ext.baseCSSPrefix + 'selectable" style="{{id}-style};">{{id}}</div></td>',
                '</tpl>',
            '</tr>'
        ];
Ext.override(Ext.grid.View, { cls: Ext.baseCSSPrefix + 'grid-view ' + Ext.baseCSSPrefix + 'selectable' });
重写view的,效果不错,没有了unselectable = "on"了,可是还是不行;

最后想到是JS的selectstart 事件再作用,打开EXT4的源代码,找到了unselectable方法下有me.swallowEvent("selectstart", true);

问题就是在这了;

最终解决方法:

Ext.override(Ext.view.Table, {
    afterRender: function() {
        var me = this;
        me.callParent();
        me.mon(me.el, {
            scroll: me.fireBodyScroll,
            scope: me
        });
        me.attachEventsForFeatures();

    } 

});

 

 

posted @ 2011-07-29 11:17 pic_name 阅读(75) 评论(0) 编辑

2011年1月3日

本来采用uft-8,在导出csv里出现用excel打开乱码的问题,

用 notepad打开,发现文件中的内容没有乱码,看编码是uft-8无BOM;

手动转为有BOM的uft-8后,用excel打开就正常了;

所以要导出的文件正常打开,就要导入有BOM的文件;

有BOM以0xEF;0xBB;0xBF; 开头;

C#

 byte[] buffer = System.Text.Encoding.GetEncoding("utf-8").GetBytes(str); 
            Response.AppendHeader("Content-Disposition", "attachment;filename=\"截止" + totolMonth.EndTime.ToShortDateString() + "结算报表.csv\"");
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
            byte[] outBuffer = new byte[buffer.Length + 3];
            outBuffer[0] = (byte)0xEF;//有BOM,解决乱码
            outBuffer[1] = (byte)0xBB;
            outBuffer[2] = (byte)0xBF;
            Array.Copy(buffer, 0, outBuffer, 3, buffer.Length);  
            return File(outBuffer, "application/ms-excel");

 

不过本方法只能在win里用吧,其它操作系统就不知道了。 

posted @ 2011-01-03 16:02 pic_name 阅读(523) 评论(0) 编辑

2010年8月31日

摘要: 增加表结构代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE[dbo].[sys_Area]([ID][int]IDENTITY(1,1)NOT...阅读全文

posted @ 2010-08-31 13:14 pic_name 阅读(38) 评论(0) 编辑

2010年8月27日

Ext真的强大,所以选择来做后台,在做一个权限时发现了一个问题,也不知道是不是BUG,如果有遇到同样的问题,请指教,3Q

在说明问题之前,先说下我怎么写的Ext,我做采用JS调用,所有JS都是动态加载,就是菜单点击时才加载一个JS(通过网上的Ext.ux.JSLoader,小有改动);

动态加载的好处自认为可以解决在不影响第一次打开加载过多JS而造成的问题,在加载JS到TabPanel后,如果再点同样菜单是不会再加载JS的,脚本做了判断(这个很重要,后面的问题可以排除是多次加载造成的);

下面是问题: Ext.form.FormPanel在加载后出现反复加载items中的控件,而且加载不全,有的没了有的又多了;第一次加载有FormPanel的js,都是正常的,如果再加载一次就会出问题如图那样的反复加载items中的内容;

感觉数据库来的数据不会有问题,道是加到formpanel的静态控件checkbox有问题

Js代码 复制代码
  1. permission = function(node) {   
  2.     var checkall = new Ext.form.Checkbox({ id: 'checkall', name: 'checkall', fieldLabel: '功能名称', boxLabel: '全选', inputValue: true,   
  3.         handler: function() {   
  4.             if (this.checked) {   
  5.                 Ext.select('input[name^=cbopitem]').each(function() { this.checked = true; });   
  6.             } else {   
  7.                 Ext.select('input[name^=cbopitem]').each(function() { this.checked = false; });   
  8.             }   
  9.         }   
  10.     });   
  11.     var form = new Ext.form.FormPanel({   
  12.         id: 'roleopform',   
  13.         title: '当前位置:角色管理 > ' + node.text,   
  14.         border: false,   
  15.         plain: true,   
  16.         layout: "form",   
  17.         buttonAlign: 'center',   
  18.         bodyStyle: 'padding:0 10px 0;',   
  19.         items: [checkall],   
  20.         buttons: [{   
  21.             text: '保存',   
  22.             handler: function() {   
  23.                 if (form.getForm().isValid()) {   
  24.                     Ext.MessageBox.show({ title: '提示框', msg: '你确定要修改吗?', buttons: Ext.MessageBox.OKCANCEL, icon: Ext.MessageBox.WARNING,   
  25.                         fn: function(btn) {   
  26.                             if (btn == 'ok') {   
  27.                                 form.getForm().submit({   
  28.                                     waitMsg: "数据保存中...",   
  29.                                     title: "请稍侯",   
  30.                                     url: '/sys/permissionsave',   
  31.                                     params: { id: node.attributes.id },   
  32.                                     success: function(form, response) {   
  33.                                         var temp = Ext.util.JSON.decode(response.response.responseText);   
  34.                                         Ext.Msg.alert("系统提示!", temp.msg);   
  35.                                     },   
  36.                                     failure: function(form, response) {   
  37.                                         Ext.MessageBox.alert("提示!""保存信息失败!");   
  38.                                     }   
  39.                                 });   
  40.                             }   
  41.                         }   
  42.                     });   
  43.                 }   
  44.             }   
  45.         }, {   
  46.             text: '取消',   
  47.             handler: function() {   
  48.                 form.getForm().reset();   
  49.             }   
  50.         }   
  51.         ]   
  52.     });   
  53.     //加载角度权限   
  54.     var conn = Ext.lib.Ajax.getConnectionObject().conn;   
  55.     conn.open("POST"'/sys/permission/' + node.attributes.id, false);   
  56.     conn.send(null);   
  57.     var perJson = Ext.util.JSON.decode(conn.responseText);   
  58.     //加载功能   
  59.     var checklist = [];   
  60.     conn.open("POST"'/sys/loadappselect'false);   
  61.     conn.send(null);   
  62.     var respText = Ext.util.JSON.decode(conn.responseText);   
  63.     Ext.each(respText, function(item) {   
  64.         var id = item.ID;   
  65.         var path = item.Path;   
  66.         var name = item.Name;   
  67.         name = GetCategoryPath(path, '|') + name;   
  68.         var checkGroup = [];   
  69.         //加载功能操作   
  70.         conn.open("POST"'/sys/operation/' + id, false);   
  71.         conn.send(null);   
  72.         var respText1 = Ext.util.JSON.decode(conn.responseText);   
  73.         Ext.each(respText1, function(item1) {   
  74.             //加载功能操作是否设置字段   
  75.             conn.open("POST"'/sys/field/' + item1.ID, false);   
  76.             conn.send(null);   
  77.             var respField = Ext.util.JSON.decode(conn.responseText);   
  78.             var opname = item1.Operation;   
  79.             if (respField.length > 0) opname += '(<a href="javascript:;">设置字段</a>)';   
  80.             var chk = { xtype: 'checkbox', boxLabel: opname, name: 'cbopitem', inputValue: item1.ID, checked: getopIscheck(perJson, item1.ID) };   
  81.             checkGroup.push(chk);   
  82.         });   
  83.         if (checkGroup.length > 0)   
  84.             checklist.push(new Ext.form.CheckboxGroup({ fieldLabel: name, columns: 1, items: checkGroup }));   
  85.     });   
  86.     form.add(checklist);   
  87.     GridMain(node, form);   
  88. };   
  89. function getopIscheck(perJson, opid) {   
  90.     var check = false; length   
  91.     for (var i = 0; i < perJson.length; i++) {   
  92.         if (perJson[i].OperationID == opid) {   
  93.             check = true;   
  94.             break;   
  95.         }   
  96.     }   
  97.     return check;   
  98. }  
解决方法是formpanel的字段不要有ID这个属性

posted @ 2010-08-27 19:25 pic_name 阅读(453) 评论(0) 编辑

2007年6月4日

Select()是提取数据库的数据的方法,采用第一次从数据库提取,之后缓存起来并从缓存中提取数据;下面是将它赋给一个实体集合hc_MaterialCategory;hc_MaterialCategory的结构就是get set;
public static List<hc_MaterialCategory> Select(string sortExpression)
        {
            string key = "hc_MaterialCategory_" + sortExpression;
            List<hc_MaterialCategory> lists = null;
            if (Cache[key] != null)
            {
                lists = (List<hc_MaterialCategory>)Cache[key];
            }
            else
            {
                lists = dal.Select(sortExpression);
                CacheData(key, lists);
            }
            return lists;
        }
问题在下面:
 public static List<hc_MaterialCategory> Selectddl()
        {
            List<hc_MaterialCategory> lists = Select();
            hc_MaterialCategory list = new hc_MaterialCategory();
            list.MatCategoryCode = "0";
            list.MatCategory = "";
            lists.Insert(0, list);
            return lists;
        }
这样,前台aspx调用 Selectddl()的时候,刷新一次,就会insert一次,而不是理想中的只有一次;
List<hc_MaterialCategory> lists = Select();改为List<hc_MaterialCategory> lists = dal.Select("");直接数据库提取数据就会是理想中的只有insert一次

posted @ 2007-06-04 09:13 pic_name 阅读(57) 评论(0) 编辑

2006年11月18日

摘要: 在Global里的Application_BeginRequest加protected void Application_BeginRequest(Object sender, EventArgs e){Response.Filter = new FontcConversion(Response.Filter);}增加一个类usingSystem;usingSystem.Text;usingSystem.Text.RegularExpressions;usingSystem.IO;usingSystem.Web;/**////<summary>///CG2BFilter的摘要说明///</su阅读全文

posted @ 2006-11-18 14:12 pic_name 阅读(131) 评论(0) 编辑

2006年11月17日

posted @ 2006-11-17 17:42 pic_name 阅读(599) 评论(0) 编辑

摘要: usingSystem;usingSystem.Web;usingSystem.Collections;namespacetest.binary{/**////<summary>///Class1的摘要说明。///</summary>publicclassBlogSiteSettings{privateHashtableblogsettings=newHashtable()...阅读全文

posted @ 2006-11-17 17:35 pic_name 阅读(130) 评论(0) 编辑

2006年9月16日

摘要: usingSystem;usingSystem.Collections;usingSystem.Collections.Specialized;usingSystem.IO;usingSystem.Runtime.Serialization.Formatters.Binary;namespacetest{/**////<summary>///User的摘要说明。///</summ...阅读全文

posted @ 2006-09-16 12:06 pic_name 阅读(106) 评论(1) 编辑

摘要: 首先要有一个www.xxx.com的域名建两个站点,aa.xxx.com.bb.xxx.com两个的登录基本上是一样的,其实就是Domain = ".kibo.cn"的作用.CREATE TABLE [dbo].[users] ([uid] [int] IDENTITY (1, 1) NOT NULL ,[UserName] [varchar] (50) COLLATE Chinese_PRC_C...阅读全文

posted @ 2006-09-16 12:03 pic_name 阅读(226) 评论(0) 编辑