C#项目代码积累

 

目录

一、         注释... 1

二、         折叠代码... 1

三、         javascrip在父窗口的TextBox1被赋予子窗口的TextBox2... 2

四、         List模板的操作... 2

五、         获取session里面的值... 4

六、         获取url的?后面的值... 4

七、         C#javascipt的提示框输出... 4

八、         绑定droplist数据... 4

九、         得到虚拟目录... 5

十、         弹出提示框... 5

十一、        关于弹出是否确定删除的js对话框(在属性里面加载). 5

十二、        cs文件里传参的时候用UrlEncode: 6

十三、        使用Cookie对象变量(Cookie是存放在客户端的). 6

十四、        C#有直接分割的方法,... 6

 

 

一、       注释

//

// Mail实体模型

//  [14/7/2008 Breezy]

//

 

二、       折叠代码

#region

#endregion

 

三、       javascrip在父窗口的TextBox1被赋予子窗口的TextBox2

//  document.form1.TextBox1.value=document.form1.TextBox2.value;

 

四、       List模板的操作

public static void ListTest(IList l) {   

PrintCollection("原列表", l);         

l.Add(5);   

PrintCollection("Add(5) 之后", l);        

 l.RemoveAt(2);  

 PrintCollection("RemoveAt(2) 之后", l);  

       l.Remove(3); 

  PrintCollection("Remove(3) 之后", l);      

   l.Insert(1, 7);

   PrintCollection("Insert(1, 7) 之后", l);  

       Console.WriteLine("包含 55{0}", l.Contains(55)); 

  Console.WriteLine("IndexOf(4) {0}", l.IndexOf(4));

   l.Clear();    PrintCollection("清除之后", l);}

 

 

本文的意义并不仅仅是为了说明如何将IList转换为DataTable,而是给出一个利用反射来实现对各种数据结构(集合类)相互转换的通用方法的编写思路。

 

相信很多使用过Nhibernate的朋友都知道,通过NH访问数据库,数据都是以ILIST形式返回的,这就为我们在.NET中使用传统的数据绑定造成了不便。由于NH返回的ILIST所装载的对象往往都是不同的,我们会为每个返回的LIST单独编写转换方法,而利用反射机制却可以做成通用的转换方法。

 

代码如下(C#):

 

 

 

using System;

using System.Collections.Generic;

using System.Text;

using System.Data;

using System.Collections;

using System.Reflection;

 

namespace KycBaseModule

{

    public class KycFunction

    {

        public KycFunction() ...{ }

        /** <summary>

        /// 实现对IListDataSet的转换

        /// </summary>

        /// <param name="ResList">待转换的IList</param>

        /// <returns>转换后的DataSet</returns>

        public static DataSet ListToDataSet(IList ResList)

{

            DataSet RDS=new DataSet();

            DataTable TempDT = new DataTable();

 

            //此处遍历IList的结构并建立同样的DataTable

            System.Reflection.PropertyInfo[] p = ResList[0].GetType().GetProperties();

            foreach (System.Reflection.PropertyInfo pi in p)

            {

                TempDT.Columns.Add(pi.Name,System.Type.GetType(pi.PropertyType.ToString()));

            }

 

            for (int i = 0; i < ResList.Count; i++)

            {

                IList TempList = new ArrayList();

                //IList中的一条记录写入ArrayList

                foreach (System.Reflection.PropertyInfo pi in p)

              {

                    object oo = pi.GetValue(ResList[i], null);

                    TempList.Add(oo);

                }

               

                object[] itm=new object[p.Length];

                //遍历ArrayListobject[]里放数据

                for (int j = 0; j < TempList.Count; j++)

               {

                    itm.SetValue(TempList[j], j);

                }

                //object[]的内容放入DataTable

                    TempDT.LoadDataRow(itm, true);

            }

            //DateTable放入DataSet

            RDS.Tables.Add(TempDT);

            //返回DataSet

            return RDS;

        }

    }

}

 

 

由上面的代码可以看出,实现的过程非常简单。首先利用反射,将传入方法的IList中的对象所包含的属性进行获取,然后根据获取的属性建立DataTableColumns,然后利用循环遍历整个IList,将每个结点对象所包含的内容依次复制到DataTable。由于该代码取自真实的项目模块,所以保留了原有的命名空间和将DataTable放入Dataset的几行。

 

希望本文能够为需要进行数据转换的朋友提供些灵感。

 

五、       获取session里面的值

uid=Convert.ToInt32(Session["uid"].ToString()); 

六、       获取url的?后面的值

 Page.Response.Redirect("school.aspx?uid=" + strUid);

Page.Request.QueryString["strUid "].ToString();

 

七、       C#javascipt的提示框输出

Response.Write("<script type=text/javascript>alert(/"操作失败888"+DDLDepratment.Text+"/");</script>");

 

 

八、       绑定droplist数据

DDLUser.DataSource = userList;

                DDLUser.DataTextField = "Name";

                DDLUser.DataValueField = "ID";

                DDLU                %>

 

 

 

#region

 int b = 0;

/// <summary>

/// 循环deplist内容

/// 在页面显示部门的连接

/// 当部门超过4个的时候换行

    try

                            {

                                foreach (EMP.Model.UserInfo usList in userList)

                                {

                                    b++;

                                    if (b == 4)

                                    {

                                        Response.Write("<br/>");

                                        b = 0;

                                    }

                                    Response.Write("<a href='~/defalt?depid=" + usList.ID + "'>" + usList.Name + "</a> ");

 

                                }

                                //  for (int i = 0; i < Request.ServerVariables.Count;i++ )

 

                                //   Response.Write(Request.ServerVariables[i]+"<br/>");

                            }

                            catch (System.NullReferenceException) { }

 

                            #endregion      

                        %>

 

九、       得到虚拟目录

   string path = Request.UserHostName;

        Response.Write(path + "<br/>");

十、       弹出提示框

Page.RegisterStartupScript("budget", "<script language = javascript>alert('上传文件超过2M !')</script>");

    // Response.Write("<script type=text/javascript>alert(/"请选择小于2M的文件!/");</script>");

ClientScript.RegisterStartupScript("budget", "<script language = javascript>alert('ni  !')</script>");

 

 

十一、           关于弹出是否确定删除的js对话框(在属性里面加载)

btn_Notebook_del.Attributes.add("onclick","return confirm('确定删除');");

 

 

十二、           cs文件里传参的时候用UrlEncode:

Response.Redirect("B.aspx?Name="+Server.UrlEncode(Name));

接参的时候用UrlDecode:

Response.Write(Server.UrlDecode(Request.QueryString["Name"]));

 

脚本儿里传参的时候用escape:

location.href = "B.aspx?Name="+escape(Name);

接参的时候仍然用UrlDecode:

Response.Write(Server.UrlDecode(Request.QueryString["Name"]));

 

十三、           使用Cookie对象变量(Cookie是存放在客户端的)

       设置Cookie:   HttpCookie cookie_name = new HttpCookie("name");

                         cookie_name.Value = Label1.Text;

                         Reponse.AppendCookie(cookie_name);

   

          获取Cookie:

                       string name= Request.Cookie["name"].Value.ToString();

 

十四、           C#有直接分割的方法,

string str="123-E";

string[] a=str.Split('-');

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值