随记汇总
1.统计程序运行的时间:Stopwatch
Stopwatch sw = new Stopwatch();
sw.Start();
DateTime startTime = DateTime.Now; BindReaderData(userId);//需要计算运行的程序或方法 DateTime endTime = DateTime.Now; TimeSpan timeSpan = startTime - endTime; Response.Write(string.Format("exec times:{0}", timeSpan.Milliseconds));
private void button1_Click(object sender, EventArgs e) { txt1.SelectAll(); Clipboard.SetDataObject(txt1.SelectedText); label1.Text = "复制成功"; }
2.ComboBox默认项
ComboBox.SelectedIndex = 0;
SelectedIndex 属性和 SelectedItem 属性:
SelectedIndex属性返回一个表示与当前选定列表项的索引的整数值,可以编程更改它,列表中相应项将出现在组合框的文本框内。如果未选定任何项,则SelectedIndex 为-1;如果选择了某个项,则SelectedIndex是从0开始的整数值。
SelectedItem 属性与 SelectedIndex 属性类似,但是SelectedItem 属性返回的是项。
3.文本框获得焦点:
winform窗口打开后文本框的默认焦点设置,进入窗口后默认聚焦到某个文本框,两种方法:
①设置tabindex
把该文本框属性里的tabIndex设为0,焦点就默认在这个文本框里了。
②Winform的Activated事件
在Form的Activated事件中添加textBox1.Focus(), 即可获得焦点。
private void Form1_Activated(object sender, EventArgs e)
{
textBox1.Focus();
}
TextBox是可以获得焦点的. 有几个前提:
1. TextBox所属的窗体(Form)在可操作(Active)状态. 即用户选中了Form.
2. TextBox的Enable属性,Visiable属性为True.
刚开始时原以为在Form的Load事件中添加textBox1.Focus(),测试失败
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Focus();
}
因为在窗体加载时调用Focus()函数时, TextBox还未能成功的被显示到界面上。所以导致了失败。
4.连接和拆分字符串
string[] year = commaDelimited.Split(new char[] {','});
string colonDelimeted = String.Join(":", year);
5.在将 nvarchar 值 + 转换成数据类型 int 时失败错误的解决办法 :
当我们写存储过程语句的时候 如果遇到
declare @sql nvarchar(200),@age int
set @sql = 'selet * from user where age = ' + @age,这时就会报错.
因为 我们要把 类似 '26' 这样的字符串拼接上去,而不是真正的把 26 拼接上去.
所以会报错,解决方法 :
set @sql = 'selet * from user where age = ' + cast(@age as nvarchar(10))
WinForm进度条的使用(ProgrameBar):
private void btnStart_Click(object sender, EventArgs e) { for (int i = 0; i < 50000; i++) { txtShow.Text = (i+1)/500 +"%"; //使空间重绘其工作区域内的无效区域 //txtShow.Update(); //处理当前的操作,而不是只专注于运算,降低运算速度,而处理其他的操作,比如鼠标的移动 Application.DoEvents(); progressBar1.Value = (int)(((i + 1) / 50000.0) * 100); } MessageBox.Show("完成"); }
6.JS调试步骤:
打开IE - F12打开开发人员工具 - 切换到脚本选项卡 - 启动调试 - 设置断点 - 回到网页页面刷新 - 进入调试 - F11单步调试
7.C#中null与string.Empty有啥区别?(null表示仅有变量名,没分配内存;Empty表示有变量而且分配内存了,知识里面的值为空""而已)
当你只定义一个str而不为其分配内存时用string str=null,但是在接下来你使用它之前必须为它赋值如str=“xxxx”也就是为它初始化
而string str= string.Empty是定义和初始化放在了一起它实际是等价于string str=null;str="";
具体使用时,如果你确定在使用前会给str赋值就用string str=null,否则用string str= string.Empty,不然程序运行时可能会引发空指针异常
WinForm弹出保存文件对话框并设置保存文件的格式:
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "excel表|*.xls";
sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK; 判断是否点击保存按钮
sfd.FileName表示设置文件名
8. 命名空间详解:http://dev.yesky.com/msdn/192/2549192.shtml
namespace ItcastSIM
List<Model.Areas> list = bll.GetAllAreasById(aid);
namespace ItcastSIM.Model
public class Areas 类名
ItcastSIM与ItcastSIM.Model可以理解为从属关系。
9.C# is和as运算符:
10.带参数的sql语句执行中出现 “必须声明标量变量@id” 错误原因分析
你传给Adapter的是 "SELECT * FROM tbTest WHERE id =@id ", 你并没有给Adapter传入@id对应的参数值。
如果你把整个selectCMD对象传给Adapter,这时候就是带上参数值的了。
内部实现有时间需要再看看
11.ASP.NET后台调用前台JS自定义方法:
http://bbs.csdn.net/topics/340172403
ClientScript.RegisterStartupScript(this.GetType(), "","<script>JSFunName('" + str+ "');</script>", true) //str是后台c#变量
aspx页面引入命名空间,在aspx中<% %>写服务器端代码,可以简写类名称。
<%@ Import Namespace="Snda.Qidian.UserCenter.Entity" %>
jquery中checkbox选中状态的正确写法:
//设置默认选项状态 if (data[1].Status == 1) { $("#cbxSetDefault").attr("checked", "checked"); //正确写法,大小写敏感,如果写为Checked在IE下不兼容 } else if (data[1].Status == 0) { $("#cbxSetDefault").removeAttr("checked"); } //错误写法:(在IE下不兼容,无效) $("#cbxSetDefault").attr("checked", true);
前端开发框架:bootstrap
VS插件推荐:Resharper
Resharper功能更强,但消耗资源多,建议配置好的机子用。VAssistX拥有Resharper绝大部分功能,消耗资源少,推荐配置不高的机子用。
UserShareDao :类命名 Dao - Data Access Object 数据访问对象 访问dll层
aspx页面在控制某一段时间内显示内容:(aspx页面写c#代码不需要更新dll,除非引用了其他工程)
<div> <% DateTime nowTime = new DateTime(2014,3,18,0,0,0); DateTime beginTime = new DateTime(2014, 2, 26); DateTime endTime = new DateTime(2014, 3, 17, 23, 59, 59); if (nowTime >= beginTime && nowTime <= endTime) {%> <a href="http://www.baidu.com" target="_blank">百度</a> <% } %> </div>
12. 对不符合条件的筛选判断:一个个单独的去判断,如果不符合即返回,把最可能不符合的判断放最前面(关关设卡)。 而不要放进来后再逐层次的去判断。
这样做比较简单,明了:
if(条件不符合1) {return}
if(条件不符合2) {return}
被关关设卡后都闯过来的,后面的就正常执行。前面不符合的都过滤掉了。
而不应该用判断是否符合来做:
if(条件符合1)
{
if(条件2是否符合){...}
else{...}
}
13.JS规范:js方法以小写字母开头。Js没有方法重载,只认方法名称,参数一一对应起来。
样式和JS文件引入在元素之后,不会造成影响,表现正常。
14.互斥锁 防止恶意大并发请求:
/// <summary>
/// 互斥锁对象
/// </summary>
private static object asyncLock = new object();
lock (asyncLock)
{
//核心执行语句 可以防止大并发恶意请求
//可以很大程度上完善
}
15.C#和JS对url进行编码:
JS:encodeURIComponent(location.href);
C#:
Server.UrlEncode("xx");
System.Uri.EscapeDataString("xx");
System.Uri.EscapeUriString ("xx");
System.Web.HttpUtility.UrlEncode("xx");
16.JS中用join拼接数组中的字符串:
//显示提示信息 function showPopMsg(msg) { var html = [ "<div class=\"small\" style=\"height:160px;\">", "<div class=\"smallbox\" style=\"height:146px;\">", "<a class=\"cha\" href=\"javascript:;\" onclick=\"layer_up.close()\" title=\"关闭\"><img src=\"/ploy/20140421/images/chaicon.png\" width=\"14\" height=\"14\" border=\"0\"></a>", "<div class=\"dafon\" style=\"padding-top:50px;\">{0}<br>".format(msg), "</div>", "</div>", "</div>"].join(""); layer_up.show("toupiaochuang", html); }
17.js用arguments[]来获取ajax返回的数据:
var data = arguments[0]; // returnText = "{result:1,currency:"xxx"}";
18.VS编译Debug和Release的区别:
Debug调试版本,包含调试信息,方便程序员调试。
Release发布版本,进行优化处理,代码大小和访问速度都有提升。
#if(DEBUG) string path = HttpContext.Current.Server.MapPath("~/Config/ShopConfig-Debug.xml"); #else string path = HttpContext.Current.Server.MapPath("~/Config/ShopConfig.xml"); #endif
Web 应用中主要使用 BootStrap CSS 框架
19.Net主要框架:
ASP.NET MVC:Model View Controller 模型-视图-控制器;
Nhibernate:目前应用的最广泛的开放源代码的对象关系映射框架(ORM)。
Spring.NET:用得最多的用途,是主要用来做依赖注入的,主要用在大型企业应用系统的实施中,实现松耦合,实现良好的系统架构。
EF:ADO.NET Entity Framework,是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。
iBatis:是一个基于SQL映射支持Java和·NET的持久层框架。
DWZ:DWZ富客户端框架(jQuery RIA framework),是中国人自己开发的基于jQuery实现的Ajax RIA开源框架。(类似Easy UI)
.NET 版的SSH:Nhibernate + spring.net + MVC
SSH:Secure Shell,SSH 为建立在应用层和传输层基础上的安全协议。
20.根据Ajax返回数据页面弹窗被拦截的解决办法:
ChckCreateAuthorNoteCallBack: function() { var data = arguments[0]; if (data != null) { if (data.IsSuccess) { var w = window.open(); if (data.ReturnString.toLowerCase() == "m") { setTimeout(function() { w.location = "url"; }, 10); } else { setTimeout(function() { w.location = "url"; }, 10); }
把ajax中加上这个就可以了:async: false,
21.Oracle 查询字段为空或非空语句:
select t.* from tbTest t where t.Image is not null; / is null
22. 使用IEtester看兼容性问题,对JS支持不好,一般用来看样式问题。
另外,看样式问题可以启用IE浏览器的兼容性视图,可以进行设置,来用不同版本IE内核来看样式问题。
23. IE6下点击Button按钮执行JS方法没反应:
http://blog.csdn.net/xiangsuixinsheng/article/details/7056332
运行:mstsc.exe 来启动远程
24.Jquery一个控件绑定多个事件
http://blog.csdn.net/arkblue/article/details/9059709
25.页面添加缓存原则:
带参数的页面都不能用缓存,那种大家浏览都一样的页面才能加缓存。
26.Response.Redirect();
Response.Redirect(url); //此重载内部调用了Response.End()方法,所以,此语句下面的不再执行。
Response.Redirect(url,false); //此重载表示执行此句后继续执行下面语句
Response.Write()语句后面的语句会继续执行
27.C#字符串转换为枚举对象:
app.Status = (AppEnum.PropsStatus)Enum.Parse(typeof(AppEnum.PropsStatus),Field.GetString(reader, "Status")); //Field.GetString(reader, "Status")是枚举项的键或值的字符串形式
28.远程访问让页面出错报黄页信息:
web.config配置:
<system.web>
<customErrors mode="Off"/>
</system.web>
30.C#的??运算符
string name = model.name??"名称";
如果model.name!=null则采用左边的model.name值,否则采用右边的值。
31.火狐浏览器查看Josn数据插件:JSONView
32.360浏览器兼容模式下:
(1)不兼容jquery的.trim()方法,无语了。改为$.trim(xxx);
34.string.format中出现{}比如json数据时报格式错误:
解决办法:最外面的{写为{{,}写为}}即可。
如:
jsonSb.AppendFormat("{{\"id\": \"{0}\",\"title\": \"{1}\",\"b_img\":\"{2}\",\"s_img\":\"{3}\",\"intro\":\"{4}\",\"policy\":\"{5}\",\"point\":\"{6}\"}},", id, title, bigimg, smallimg, intro, policy, point);
35.JS在新标签页中打开链接URL,兼容IE,Chrome,Firefox
window.open(url, '_blank').location;