遗忘海岸

江湖程序员 -Feiph(LM战士)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

一行代码收集页

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'

SET IDENTITY_INSERT TableName ON--开启(可以显性插入Id)
SET IDENTITY_INSERTTableName OFF--关闭
 

 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

37.统计表记录数 

SELECT a.name, b.rows

FROM sysobjects AS a INNER JOIN

sysindexes AS b ON a.id = b.id

WHERE (a.type = 'u') AND (b.indid IN (0, 1))

ORDER BY b.rows DESC

 

38.剪切板到gridview

var txt= Clipboard.GetText(TextDataFormat.Text).Replace(@"""","");
var rows = txt.Split(new string[]{Environment.NewLine},StringSplitOptions.RemoveEmptyEntries);
dataGridView1.Columns.Clear();
bool first=true;
foreach (var row in rows)
{

var cells= row.Split('\t');
if(first)
{
for (int i = 0; i < cells.Length; i++)
{
dataGridView1.Columns.Add("c" + i, cells[i]);
}
first = false;
}
else{
dataGridView1.Rows.Add(cells);
}
}
  

// 使用这句可能导致资源管理器崩溃 Clipboard.Clear();
Clipboard.SetText(" ");// ""会报错,需要一些空字符
iKanBanBindingSource.DataSource = list;

 39.代码中配置EF链接字符串

   EntityConnectionStringBuilder ecb = new EntityConnectionStringBuilder();
            ecb.Metadata = "res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl";
            ecb.Provider = "System.Data.SqlClient";
            ecb.ProviderConnectionString = "data source=DatabaseServerName;initial catalog= DatabaseName;persist security info=True;user id=sa;password=YourPassword;multipleactiveresultsets=True;App=EntityFramework";
            YourEntity YEntity = new YourEntity(ecb.ConnectionString);

40.一个触发器

复制代码
USE [JL_MFG]
GO
/****** Object:  Trigger [dbo].[trigMessageList]    Script Date: 12/15/2017 18:48:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
Create trigger [dbo].[Trig_Enterprise] 
on [dbo].Enterprise
after insert,update,delete
as
declare @log nvarchar(max)
declare @loginTime nvarchar(50)
declare @host_name nvarchar(50)
declare @login_name nvarchar(50)
declare @appName  nvarchar(100)
declare @ip nvarchar(50)
declare @inedV nvarchar(110)
declare @insV nvarchar(110)
declare @detV nvarchar(110)

select
@loginTime=a.login_time,   
@host_name=a.host_name,  
@login_name=a.login_name,  
@appName=a.[program_name], 
@ip=b.client_net_address 
from sys.dm_exec_sessions a , sys.dm_exec_connections b
where a.session_id=b.session_id and a.session_id = @@SPID;

select @insV=EnterpriseDate From inserted
Select @detV=EnterpriseDate From deleted
set @log=@loginTime+','+@host_name+','+@login_name+','+@appName+','+@ip+','+@insV+','+@detV

INSERT INTO [JL_MFG].[dbo].[analysis_Log]
           ([ReportId]
           ,[LogType]
           ,[KeyId]
           ,[KeyType]
           ,[Content]
           ,[AddTime]
           ,[Severity])
     VALUES
           (1
           ,''
           ,1
           ,0
           ,@log
           ,GETDATE()
           ,1)
View Code
复制代码

 41.一个触发器

复制代码
 Create trigger safety

 On Database

 For drop_table

 as

   DECLARE  @event xml   
   DECLARE @tablesname varchar(1024)  
   set @event=EVENTDATA();  
   set @tablesname=@event.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname')  
   if @tablesname='UserTable' and @tablesname='UserTable'  
   begin  
    PRINT 'sorry,you are not dba'  
    ROLLBACK ;  
   end 
View Code
复制代码

 

 42.批量删除

复制代码
SET ROWCOUNT 10
delete_more:
     select 1

     delete from dbo.Alarm_Log where RecId<1000
IF @@ROWCOUNT > 0 GOTO delete_more
SET ROWCOUNT 0
View Code
复制代码

 

43.一个正规表达式

前三个字母固定若ABC|CDA|BBC 后面接1-9,然后是任意位数字

复制代码
            var m = Regex.Match(ent.QTeam, "^(HDL|HDF|HDD){1}[1-9]{1}[0-9]*$", RegexOptions.Singleline | RegexOptions.IgnoreCase);
            if (!m.Success)
            {
                throw new Exception("必需是XXX + [1-9]{1位} +数字{0到多位} 这样的形式");
            }
View Code
复制代码

 

44.数据库一只读操作


ALTER DATABASE FDG_Sub SET READ_ONLY WITH NO_WAIT  --如果执行不了先将数据库设置成离线模式

ALTER DATABASE FDG_Sub SET READ_WRITE WITH NO_WAIT

--修改数据库状态为正常状态

RESTORE DATABASE FDG_Sub WITH RECOVERY;
Go

--离线数据库
ALTER DATABASE FDG_Sub
SET OFFLINE WITH ROLLBACK IMMEDIATE

--连接数据库

ALTER DATABASE FDG_Sub
SET ONLINE

45.数据库还原Log并设置成备用\只读模式

ALTER DATABASE [FDG_Test] SET OFFLINE WITH ROLLBACK IMMEDIATE --离线

ALTER database [FDG_Test] set online --马上上线

RESTORE LOG [FDG_Test] FROM DISK = N'D:\Log4'      --还原
WITH STANDBY = N'D:\ROLLBACK_UNDO_FDG.BAK',
NOUNLOAD, STATS = 10

 

ALTER database [FDG_Test] set online  --在上线一次, 操作可多次执行,有幂等性

 

ALTER DATABASE [FDG_Test] SET SINGLE_USER
ALTER DATABASE [FDG_Test] SET MUlti_USER

 

46.devexpress 数字格式化 输出

 

Numeric "{0:n2}"

Numeric "{0:c4}" --货币
 

47.反射方式创建泛型List

pty是PropertyInfo  入card.ParamList,  public List<XXX> ParamList{get;set;}

var paramType = pty.PropertyType.GetGenericArguments()[0];
var listType = typeof(List<>).MakeGenericType(paramType);
var list = Activator.CreateInstance(listType) as IList;

 
 
 
 
 48.IronPtyhon调用C#定义的泛型扩展函数

from F.Studio.Prime.Util import MyEnumerable as E
list=[1,2,3,4,5]

E.A2(list,lambda x:x*x,',')

 
 
 

posted on   遗忘海岸  阅读(635)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
点击右上角即可分享
微信分享提示