[2011-10-31]小知识点一
项目中经常遇到各种各样的小知识点,每当有空时便整理一下,养成一个好的习惯也许可以从这里开始。
今天整理了3个小知识点,如下:
1.SQL
Insert into TableA Select * from TableB
这里的A表和B表具有相同的列。
2.C#
有时需要从后台返回脚本到前台,并执行脚本,这里有一种写法参考:
System.Web.UI.ScriptManager.RegisterClientScriptBlock(page, page.GetType(),JsKey, strJs, true);
参数解释:page 为页面对象 即System.Web.UI.Page类的实例
JsKey 为脚本标识 通常赋空字符串即可
strJs 脚本内容
ture 标识要包含在<script></script>标签中
3.jQuery
经常需要在页面上进行一些计算,比如从数据库查询出了数量和单价,然后要计算每个商品的总价,这里可以用下面的方法进行计算。
$(document).ready(function() {
$(".amount").each(function() {
var id = $(this).attr("id");
setPrice(id);
});
});
function setPrice(id) {
var count = parseInt($(".proCount" + id).text());
var price = $(".price" + id).val();
var amount = (price * count).toFixed(2);
$("#amount" + id).text(amount);
}
.each(函数) 这是jQuery里的迭代函数。
这里以3个CSS类选择器来标识页面上的3列,根据类选择器获取每个商品的数量和价格,再进行计算,最后保留两位小数。
4.JQuery取Json数据
a.如果服务端传回的数据为JSON格式
服务端:string json = JsonConvert.SerializeObject(obj);
客户端:var json = <%= json %>;
$.each(json,function(key,obj){
document.writeln("订单编号:"+obj.OrderId+" 顾客: "+obj.CName);
});
b.如果服务端传回的是JSON格式的字符串
服务端:string json = "{Array1:[{\"OrderId\":\"210121\",\"CName\":\"ceshi\"},{\"OrderId\":\"112132\",\"CName\":\"shangpin\"}]}";
客户端:var json = <%= json %>;
var dataObj = eval(json);
$.each(dataObj.Array1,function(key,obj){
document.writeln("订单编号:"+obj.OrderId+" 顾客: "+obj.CName);
});
5.无冲突使用$作为JQuery的别名
jQuery.noCoflict();
(function($){
$(function(){
//jQuery代码,依然使用$作为别名
});
})(jQuery);
6.static readonly & const
static readonly 与const 相似,const本身为静态常量,并且是编译期静态常量,不可在构造函数中赋值(不能用new关键字),可以用于局部变量。
static readonly是运行期静态常量,可以在构造函数中赋值(可以用new关键字),但不可用于局部变量或类的属性。均通过类名访问。
7.将一个字典集合转换为一个字符串,并且格式为[name=value&name=value]
Dictionary<string,string> keyvalues = new Dictionary<string,string>();
keyvalues.Add("1","hello");
string kvs = string.Join("&",
(from kv in keyvalues
let item = kv.Key + "=" + HttpUtility.UrlEncode(kv.Value)
select item).ToArray());
8.给网站指定域名
修改 C:\Windows\System32\drivers\etc\hosts 文件,
增加一个映射条目:127.0.0.1 www.test.com 即可。
9.数据库备份
1 DECLARE @strPath NVARCHAR(200)
2 set @strPath = convert(NVARCHAR(19),getdate(),120)
3 set @strPath = REPLACE(@strPath, ':' , '.')
4 set @strPath = 'F:\bak\[DataBaseName]\'+@strPath + '.bak'
5 BACKUP DATABASE [DataBaseName] TO DISK = @strPath WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT
10.编码问题
在JavaScript中推荐的做法是用encodeURI对URI的网址部分编码,用encodeURIComponent对URI中传递的参数进行编码。
在C#中推荐的做法是用Uri.EscapeUriString对URI的网址部分编码,用Uri.EscapeDataString对URI中传递的参数进行编码。
11.判断是否为IE浏览器
if (! -[1, ])
12.字段值重复的取ID最大的记录SQL
select * from test a
where not exists (
select 1 from test
where USERNAME=a.USERNAME
and id>a.id)
13.局部更新Repeater content为包含repeater的div唯一编号(ID)
$("#content").load("WorkItemInfo.aspx?WorkItemName="+escape(workItemName)+"&Action=select"+"#p-Getting-Started #content");
14.避免发送请求缓存
在发送请求的同时传入时间戳 '&timer='+(new Date).getMilliseconds()
----------------------------------------------------------END------------------------------------------------------------