目录
三、 javascrip在父窗口的TextBox1被赋予子窗口的TextBox2值... 2
十一、 关于弹出是否确定删除的js对话框(在属性里面加载). 5
十三、 使用Cookie对象变量(Cookie是存放在客户端的). 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>
/// 实现对IList到DataSet的转换
/// </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];
//遍历ArrayList向object[]里放数据
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中的对象所包含的属性进行获取,然后根据获取的属性建立DataTable的Columns,然后利用循环遍历整个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>");
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('-');