zoukankan      html  css  js  c++  java
  • 代码点滴收获 (2010年2月)

    近来开发的所学到的如下:

    0、jQuery与Autocomplete插件
    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格式化字符串的方法(有修改)

    代码
    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;
    };
    // 使用时 format("12345678901","###,###,###,###,###,###.00");

    <script language="javascript" type="text/javascript" src="../Js/StringFormat.js"></script>
    <script language="javascript" type="text/javascript">
    function $(value) { return document.getElementById(value);}
    function CalculateTotal(){
        
    var fmt = "###,###,###,###,###,###.00";
        
    var gridID = "<%=POReleaseGridView.ClientID %>";
        
    var lblGrandTotal = $("ClientSpan");
        
    var tblPO = $(gridID);
        
    var rowCount = tblPO.rows.length;

        
    // ctl00_mdcmContentPlaceHolder_POReleaseGridView_ctl02_QtyTextBox
        // ctl00_mdcmContentPlaceHolder_POReleaseGridView_ctl02_UsePremiumRadioButtonList_0

        
    var rowID = "";
        
    var Qty;
        
    var UnitPrice;
        
    var PreCharge;

        
    var cbPremiumYes;
        
    var cbPremiumNo;
        
    var lblTotal;

        
    var calTotal = 0;

        
    // formula:
        // if preCharge enabled and if preCharge larger than 100: ( qty * price ) * ( preCharge / 100 );
        // else qty * price
        for (var i = 0; i < rowCount; i++){
            rowID 
    = gridID + "_ctl" + ((i <= 9)? "0" + i : i);
            
    if (i < 2 || i >= rowCount) {continue;}

            
    // Get the controls relavent with total
            Qty = getNum($(rowID + "_QtyTextBox"));
            UnitPrice 
    = getNum($(rowID + "_unitPriceTextBox"));
            PreCharge 
    = getNum($(rowID + "_PremiumTextBox"));

            lblPreCharge 
    = $(rowID + "_PremiumTextBox");
            cbPremiumYes 
    = $(rowID + "_UsePremiumRadioButtonList_0");
            cbPremiumNo 
    = $(rowID + "_UsePremiumRadioButtonList_1");

            lblTotal 
    = $(rowID + "_TotalLabel");

            
    // ===
            var tmp = Qty * UnitPrice;
            
    if (cbPremiumYes.checked && PreCharge > 100){
                tmp 
    = tmp * (PreCharge / 100);
            }

            lblTotal.innerHTML 
    = format(tmp, fmt);
            calTotal 
    += tmp;
         }

         lblGrandTotal.innerHTML 
    = format(calTotal, fmt);
    }

    function getNum(ctrl){
        
    return (ctrl.value == "" ? 0 : parseFloat(ctrl.value));
    }
    </script>

    6、Client-Side的数据与服务器端数据传递方法(以自定义控件为例)

    代码

    public int SelectedID
    {
        
    get
        {
            
    // 客户端 -> 服务器端:
            
    // Get it from client-side (hidden field)
            if (this.Page.IsPostBack && this.Page.Request.Form[this.HiddenID_CtrlID] != null)
            {
                ViewState[
    this.VSNameSelectedID] = this.Page.Request.Form[this.HiddenID_CtrlID];
            }

            
    if (null == ViewState[this.VSNameSelectedID]) { return -1; }
            
    try
            {
                Convert.ToInt32(ViewState[
    this.VSNameSelectedID]);
            }
            
    catch (Exception ex)
            {
                ViewState[
    this.VSNameSelectedID] = "-1";
            }

            
    return Convert.ToInt32(ViewState[this.VSNameSelectedID]);
        }
        
    set
        {
            
    // 服务器 -> 客户端
            ViewState[this.VSNameSelectedID] = value;

            
    // set the client script to change the value (ignored, in fact)
            this.ScriptSpecial = GetScriptSetCtrol(value, this.Text, false);
        }
    }

    /// <summary>
    /// Get the Client-side javascript and render it to HTML
    /// </summary>
    /// <param name="_item"></param>
    /// <returns></returns>
    public string GetScriptSetCtrol(int id, string name, bool isCreateObject)
    {
        
    // 1. create/modify the instantialized client-side object
        
    // 2. specify modified "SelectedID" to its hidden field 
        return string.Format("{0} {1} = new ACTextBox(\"{2}\",\"{3}\");document.getElementById('{4}').value = '{2}';",
                             isCreateObject 
    ? "var " : string.Empty,
                             
    this.ACBoxID,
                             id, name,
                             
    this.HiddenID_CtrlID);
    }

    // Render出去
    protected override void Render(HtmlTextWriter writer)
    {
            writer.WriteLine(
    string.Format(@"<script language='javascript' type='text/javascript'>{0}</script>", strScript_Create + strScript_Initailization + this.ScriptValidate + this.ScriptSpecial));

            
    base.Render(writer);
    }

    7、 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.


    8、How to load datareader to DataTable?  
    DataReader dr = getDR();
    DataTable dt 
    = new DataTable();
    Dt.Load(dr);

    9、使用Context.Handler将整个页面作为参数传递过去

    10、如果需要完成如下功能:
    1) 客户端window.open
    2) 同时服务器端要处理session
    做法:

    代码
    input type=button;

    JS:
    // submit form to capture in session.  
    theform.HidAction.value = "Customize";
    theform.submit();

    C#:
    if (Page.IsPostBack && HidAction.Value == "Customize")
    {
        System.Web.HttpContext.Current.Session[
    "SelectedUsers"= HidSelectedPermissions.Value;
    }

    PS.上面的window.open应该用clientstartup在C#页面里面做 

    10、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、Oracle找object很容易,MSSQL就不知道了,hope the sql below will be helpful

    代码
    SELECT     a.name AS columnname, object_name(a.id) AS tablename
    FROM       syscolumns AS a, sysobjects AS b, systypes AS c
    WHERE      a.name='DeleteTime' AND a.id=b.id AND a.xtype=c.xtype AND b.xtype='u'

    14、要在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")]

    愿一路奔跑不退缩,到目前一直从事.Net的B/S,C/S企业应用研发
  • 相关阅读:
    HTML标签大全
    PHP实现QQ第三方登录代码
    php链接access并查询列出
    php连接Access数据库
    获取文件信息
    动态网页转伪静态
    asp读取指定目录下的文件名
    如何设置VBA代码的密码?如何取消VBA代码的密码?
    ol序号并在序号加背景色
    免费ASP空间
  • 原文地址:https://www.cnblogs.com/syveen/p/1671091.html
Copyright © 2011-2022 走看看