1. 获取类实体的属性值
//Object container
//System.ComponentModel 命名空间
PropertyDescriptor descriptor = TypeDescriptor.GetProperties(container).Find(propName, true);
return descriptor.GetValue(container);
2. .net2.0 跟.net1.0 的asp.net应用程序不能同时分配到同一个应用程序池上(w3p.exe)
参考:http://blog.csdn.net/tiantian1980/archive/2008/05/30/2495417.aspx
3. Host文件位置 :C:\WINDOWS\system32\drivers\etc
4. Response.Redirect(http://www.0576sy.cn/); 后写不写Response.End(); 效果都是一样的.
5.使用 Response.Buffer = false; 可以是使页面内容直接输出,而不是生成全部html(输出数据)后再输出,可以在页面生成或者需要执行一个长时间操作是使用,把要长时间执行的操作写到页面末尾</html><%DoJob()%>,或者在rotected override void Render(HtmlTextWriter writer) 的重载中调用,
6.随机读取数据(MSSQL) Select * From Tablename Order By newId()
7.设置首页跟收藏, 注意收藏时使用 js location.hostname(href) 存在访问权限问题,可以使用服务器脚本或静太指定
<a href="#" onclick="window.external.AddFavorite('http://<%#Request.ServerVariables["HTTP_HOST"] %>', '<%#Setting.CompanyName %>');">收藏本公司</a>
<a href="#" onclick="this.style.behavior='url(#default#homepage)';this.setHomePage(location.hostname);">设为首页</a>
8.Select Into 与 Insert into Select ...
Select Into: 目标表(下面是NewShippers )不存在,语句执行后将创建
SELECT Shippers.*, Link.Address, Link.City,
Link.Region, Link.PostalCode
INTO NewShippers
FROM Shippers
JOIN LinkServer.DB.dbo.Shippers AS Link
ON (Shippers.ShipperID = Link.ShipperID)
Insert Into Select :待插入表已经存在
INSERT INTO MyBooks(columns)
SELECT title_id, title, type
FROM titles
WHERE type = 'mod_cook'
9. FCK V2.* 在GB2312编码下上传文件乱码
FCKeditor\editor\filemanager\browser\default下找到frmupload.html和frmresourceslist.html
在Head里面加<meta http-equiv="content-type" content="text/html; charset=gb2312">
10.Asp.net2.0 中App_Code 与App_Code.dll
如果选择将App_Code目录上传到空间那么就要保证Bin目录下不要包含App_code.dll(发布网站时一般会生成)文件,即两个只能选一个,不然会出现两个程序集冲突的情况.
11.Cache 类是线程安全的,在asp.net环境下不需要额外的代码
12.JQuery中使用 $("input[name=searchType][checked]") 来选中一组名叫searchType的radio元素中已选中的那个
13.GridView如果不绑定数据源控件,则以下两种方式,无法获取主键: e.Keys[0].ToString() e.Keys["id"].ToString() 请使用以下方式获取主键: gv.DataKeys[e.RowIndex].Value 13.GridView如果不绑定数据源控件,则以下两种方式,无法获取主键:
e.Keys[0].ToString()
e.Keys["id"].ToString()
请使用以下方式获取主键:
gv.DataKeys[e.RowIndex].Value
15.将整型转化成二进制字符串表示MessageBox.Show( Convert.ToString(-1, 2));
16.IIS7.0中禁止脚本运行,需要设置对应目录的处理程序映射,在高级里面取消执行脚本,(批量设置时在下放空白处点鼠标右键找到相应的菜单进行设置)
17.强制浏览器站兼容模式显示<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
18.MSSQL拼接行数据
Declare @className nvarchar(1000)
Select @className='' --注意一定要先初始化变量
Select @className=@className + t.className +';' From (Select ClassName From oblog_logclass ) as t
Select @className as CN
19.可以在asp.net环境的线程中使用System.Web.Hosting.HostingEnvironment.MapPath("/")来将获取实际地址
20.获取当天(或前后几天)凌晨时间,DateTime.Now.Date.AddDays(+-3)
21. <%#txtTilte.Text%> 方式在页面上绑定一次后会创建一个匿名控件,视图状态会保存下来因此只要在条件“!IsPostBack”中绑定一次就可以了
22.编辑页面内容(Web编辑器实现原理)地址栏输入:javascript:if(document.body.contentEditable=true);
23.使用Function名称.Call或Apply来掉用js函数,实现事件触发的效果
如:function ddl_change(){
alert($(this).val());
}
是下拉框改变事件的处理函数,可以使用 ddl_change.call($("ddlProvince")[0],null,null); 来调用,这样$(this)就可以获取到ddlProvince控件了
24.关闭模态弹窗后刷新主窗口,需要使用button按钮,LinkButton无效,$("btnRefresh").click();
25.SQL dateAdd(day,0.9,'2011-11-07 23:59:59') 结果仍旧是2011-11-07 ... 即不满一天的会忽律
26.LINQ 返回可能为空记录表的某字段MAX的安全作法
var retId = Ctx.SqlCmdTexts.Max(ent => (int?)ent.sequence);
int maxId = retId.HasValue ? retId.Value + 1 : 1;
27.SqlCommand添加可空参数
public void AddParameter(SqlCommand cmd, string parameterName, object value)
{
SqlParameter parameter = new SqlParameter(parameterName, value);
if (value == null)
{
parameter.IsNullable = true;
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
28.使用SynchronizationContext.Current.Post"延迟"UI事件执行
1.如使用ShowDialog打开的窗体,在关闭时先关闭窗体再显示提示信息则可以使用Post((o)=>{MessageBox(....)},null);
2.使用ShowDialog打开的窗体回调时需要重打开一个新的也可以这样写
SynchronizationContext.Current.Post((o) =>
{
var btn = typeof(ToolStripButton).GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance);
btn.Invoke(bindingNavigatorAddNewItem, new object[] { null });
},null);
29.使用System.Data.DataSetExtensions 可以让DataTable支持Linq
DataTable dt = new DataTable();
FillDataTable(dt);
dt.AsEnumerable().Where(ent => ent.Field<int?>("Level") >= 3).ToList();
30.复制DataTable的结构并填充制定页面的数据(客户端分页)
DataTable dt = SqlHelper.ExecuteDataset(DBCtx.ConnStr, CommandType.Text, cmdText).Tables[0];
_Total = dt.Rows.Count;
DataTable dt2 = dt.Clone();
foreach(var dr in dt.AsEnumerable().Skip(startRowIndex).Take(maximumRows))
{
dt2.Rows.Add(dr.ItemArray);
}
return dt2;
31.创建非聚集包含索引并制定索引填充因子
CREATE NONCLUSTERED INDEX [索引名]
ON [dbo].[表明]
(
[索引列名] ASC
)
INCLUDE ( 包含列1,包含列2)
WITH ( fillfactor =80 , SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF)
ON [PRIMARY]
32.Linq/Lambda 之分组统计实现
List<BorrowTimeWinModel> list = new List<BorrowTimeWinModel>()
{
new BorrowTimeWinModel(){MouldNo="223",UseCount=1,Barcode="1"},
new BorrowTimeWinModel(){MouldNo="223",UseCount=2,Barcode="1"},
new BorrowTimeWinModel(){MouldNo="223",UseCount=3,Barcode="5"},
new BorrowTimeWinModel(){MouldNo="223",UseCount=4,Barcode="1"},
new BorrowTimeWinModel(){MouldNo="221",UseCount=1,Barcode="1"},
new BorrowTimeWinModel(){MouldNo="221",UseCount=2,Barcode="1"},
new BorrowTimeWinModel(){MouldNo="221",UseCount=3,Barcode="5"},
new BorrowTimeWinModel(){MouldNo="221",UseCount=4,Barcode="1"}
};
var rList= list.GroupBy(ent=>ent.MouldNo).Select(ent=>new {Name=ent.Key,Sum=ent.Sum(it=>it.UseCount),Max=ent.Max(it2=>it2.Barcode)}).ToList();
foreach (var r in rList)
{
Console.WriteLine(string.Format("Name:{0},Toatl:{1},Max:{2}", r.Name, r.Sum, r.Max));
}
按多个字段分组
var byM = builder.MOPTable.GroupBy(ent => new { ent.MCode, ent.MName }).Select(g =>
new { MCode = g.Key.MCode,
MName = g.Key.MName,
Cost=g.Sum(it=>it.Cost),
Qty=g.First().Qty,
Price = g.Sum(it => it.Cost) / g.First().Qty
}
);
33.获取本机MAC,与NDS配置信息
List<IPAddress> res = new List<IPAddress>();
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
Console.WriteLine(nic.GetPhysicalAddress().ToString());//MAC
if ((nic.OperationalStatus == OperationalStatus.Up) && (nic.NetworkInterfaceType != NetworkInterfaceType.Loopback))
{
foreach (IPAddress dns in nic.GetIPProperties().DnsAddresses)
{
if (!res.Contains(dns))
res.Add(dns);
}
}
}
34.动态加载窗体
使用Assembly.LoadFrom("F.Studio.WinUI.exe") 要带扩展名,并且效率没Load搞
参考:http://www.cnblogs.com/xuefeng1982/archive/2009/11/09/1598956.html
private Form CreateForm(ModuleInfo info)
{
var a = System.IO.Path.GetFileNameWithoutExtension(info.Assembly);
var t = Assembly.Load(a).GetType(info.Type, true);
var frm = Activator.CreateInstance(t) as Form;
return frm;
}
菜单节点
<ModuleInfo>
<Id>8811</Id>
<Title>合作伙伴</Title>
<Key>be6a046b-1431-491c-97e6-70d5fd6bc001</Key>
<ToolTip />
<Assembly>FIStudio.WinUI.exe</Assembly>
<Type>FIStudio.WinUI.UI.frmCooperatorMgr</Type>
<Args />
<IsShowDialog>false</IsShowDialog>
<OrderId>10</OrderId>
</ModuleInfo>
35.返回指定泛型的基础类型Nullable.GetUnderlyingType(gType);
36. licenses.licx 的解决方法
在使用DevExpress控件的时候。每次对窗体进行更改的时候,都会出现一个对话框。发布的时候 也会出现一个对话框。之前的解决方法是在发布的时候把licenses.licx给删除掉,但是这个方法治标不治本。每次发布的时候都要删除,如果忘记删除了,还需要重新发布,让人很是抓狂。现通过Google,找到了解决方法:licenses.licx Properties 的Build Action 设置为无即可。
深入的解决问题是很有必要的,这样解决问题的方法是一劳永逸的。
p