Rss Feed

嘉瑜的知性探索

2011年梦想主色调:书、茶、咖啡、红酒、运动、日记、音乐、自制美食、干净明亮的房间

开发中遇到的点滴 (2/2010)

2010-02-17 by ,   Category: 码农日记,   Tags:  No Comments  36次浏览  

枚举,
自定义控件之TypeConverter,
Javascript格式化数值,
Context.Handler,
如何在自定义控件的CSS中引入资源图片

1.1、将枚举转为string[]

private enum MyEnum{A,B,C}
string[] var = Enum.GetNames(typeof(MyEnum)); // "A""B""C"的数组
string var2 = MyEnum.A.ToString(); //"A"

1.2、将string[]转成enum

Aircraft air = (Aircraft) Enum.Parse(typeof(Aircraft), "A,B,C", true);

2、自定义控件之下拉式属性显示: 

[TypeConverter(typeof(ModuleConverter))]
public string Module {
    get {}
    set {}
}

#region TypeConverter
public class DataSourceTypeConverter: StringConverter {
    StandardValuesCollection theValue = new StandardValuesCollection(Enum.GetNames(typeof(Enums.EnumDataSource)));

    //这一个override说明要用下拉列表编辑属性
    public override bool GetStandardValuesSupported(ITypeDescriptorContext context) {
        return true;
    }
    //这个override返回下拉列表项
    public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) {
        return theValue;
    }
    //return ture的话属性只能选,return false 属性可选可填
    public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) {
        return true;
    }
}

4、判断字符串拼接成的方法名是否存在

//一般来说 if (typeof(functionName) == "function") 就可,若是拼接成的呢?

//在IE和FF下试过均OK

if ("functionName"in Window) {}

5、Javascript格式化数字字符串的方法(有修改)

即: 使用时 format("12345678901","###,###,###,###,###,###.00");

var format = function (number, form) {
    var forms = form.split('.'),
        number = '' + number,
        numbers = number.split('.'),
        leftnumber = numbers[0].split(''),
        exec = function (lastMatch) {
            if (lastMatch == '0' || lastMatch == '#') {
                if (leftnumber.length) {
                    return leftnumber.pop();
                } else if (lastMatch == '0') {
                    return lastMatch;
                } else {
                    return '';
                }
            } else {
                return lastMatch;
            }
        },
        string

        string = forms[0].split('').reverse().join('').replace(/./g, exec).split('').reverse().join('');
    string = leftnumber.join('') + string;

    if (forms[1] && forms[1].length) {
        leftnumber = (numbers[1] && numbers[1].length) ? numbers[1].split('').reverse() : [];
        string += '.' + forms[1].replace(/./g, exec);
    }
    var ret = string.replace(/\.$/, '');

    //Modified, debugger;
    var i = 0;
    var j = 0;
    while (i == 0 && j < 10) {
        j++;
        i = ret.indexOf(',');
        ret = ret.substring(i + 1, ret.length);
        i = ret.indexOf(',');
    }
    return ret;
};

6、 set cursor position to textbox’s last place 

var v = tbID.value;
tbid.value = '';
tbid.value = v; 

the value exchange js codes can make it.

7、how to load datareader to datatable? 

datareader dr = getdr();
datatable dt = new datatable();
dt.load(dr); 

8、使用context.handler将整个页面作为参数传递过去

有时希望在页面显示之前编辑的成功信息,又不希望在那次编辑后仅用繁杂的页面控件重置(我们知道那viewstate有时让人想吐),howto?

1). 先给litmsg赋值,

2). 再使用 server.transfer(this.page.request.rawurl);

3). 在!ispostback代码部分使用, litmsg.text = ((literal) ((page) context.handler).findcontrol("litmsg")).text;

9、如果需要完成如下功能:

1) 客户端window.open

2) 同时服务器端要处理session

做法:

先form.submit(),在此之前记得带值到response.form,在post back中判断后处理session,再register.clientscript打开一个新页面。 ps.记得window.open应该用clientstartup在c#页面里面做

10、一个奇怪的现象,只能用linq解决了

string.join( ",", ( from groupid in groupids select groupid.tostring() ).toarray<string>() ) 

决定学linq了…

很奇怪的是,从arraylist al = .. ; al.toarray(typeof(int)) as int 都会出错,就算al里面每一项都确保是int也不行,必须得用这个linq语句 >"<

(from i in al.toarray() select convert.toint32(i) ) .toarray<int>()

才行

11、使用datareader时,尽量使用dr.HasRow来代替if (dr != null) 。

这样可以避免因传入parameter有误而使dr为null,不知道为什么,param传入有误时,executedatereader并不报错。 

12、try to use string.IsNullOrEmpty(strtemp) 

13、要在server side control中包含css,且css中又有图片,用performsubstitution = true,如:

[assembly: webresource("broadcom.csp.ctrl.autocompletebox.jquery.autocomplete.css", "text/css", performsubstitution = true)][assembly: webresource("broadcom.csp.ctrl.autocompletebox.iconsearch.png", "image/png")][assembly: webresource("broadcom.csp.ctrl.autocompletebox.indicator.gif", "image/gif")]


Tags:

Leave a Comment