Monthly Archives: March 2009

历史与人物

摘自 天公不语对枯棋 50年起,中国近代史被分割成 鸦片战争,第二次鸦片战争,太平天国,捻军,洋务运动,中法战争,中日甲午战争,戊戌变法,义和团,辛亥革命等几大块,每一大块中的人物,又依统治者与人民群众,抵抗派与投降派,帝党与后党,保守派与革命派等政治概念,而定位爱国与卖国,先进与保守,革命与反革命. 结果,复杂的历史研究被简化为区分好人与坏人的儿戏. 相当部分的历史人物被过滤掉了,长期埋没没人搭理. 剩下的,则被拔高或贬低,溢美或丑化,然后是翻来覆去的炒作

Posted in 摘抄转贴 | Leave a comment

在Postback时disable submit按钮

在ASP.NET的Server端Button控件缺省会被render成 <input type=”submit”>点击submit button,浏览器会就会发起一个postback,如果此时用JavaScript代码disable这个submit button,浏览器就会取消这次paostback, 好在ASP.NET的Button控件提供了UseSubmitBehavior属性,如果设置UseSubmitBehavior="false",button就会被render成<input type=”button”>,同时会生成JavaScript函数_doPostBack来负责页面的提交. 最终的解决方案是:<asp:Button runat="server" ID="BtnSubmit"     OnClientClick="this.disabled = true; this.value = ‘Submitting…’;"      UseSubmitBehavior="false"      OnClick="BtnSubmit_Click"      Text="Submit Me!" /> 客户端的onClick脚本this.disabled = true; this.value = ‘Submitting…’;会disable button, 当postback完成后,页面会重新render,button 又会恢复enable的状态.

Posted in Web Development | Leave a comment

$(document).ready() 和 pageLoad(), 以及Sys.Application.init事件的辨析

http://encosia.com/2009/03/25/document-ready-and-pageload-are-not-the-same/ 当页面加载后,Developer需要在第一时间(earliest point)初始化页面上的DOM元素, jQuery 提供的 $(document).ready(function(){…});通常简写为$(function(){…});jQuery的官方文档说在DOM元素ready时,回调函数会被调用.但对于不同的浏览器,$(document).ready的实现机制有所不同:对于支持DOMContentLoaded事件的浏览器,DOMContentLoaded事件触发时调用ready函数,对于不支持DOMContentLoaded事件的浏览器(IE),在document的readyState 变为complete时调用,如果浏览器不支持这两种机制,就在window.onload()中调用ready函数 这个callback function只会在document加载后执行一次.执行时机早于pageLoad()多个$(function(){…});会顺序执行. 如果使用ASP.NET AJAX Library,名为pageLoad()函数,会自动成为Application.Load()的处理函数,这个机制类似于server端Page_Load函数()自动成为Page.Load的处理函数.参考ASP.NET AJAX的文档说明其内部通过调用setTimeout(0, function)实现,这实际是利用了JavaScript的单线程执行的特性,在DOM元素加载完毕后执行,在所有的浏览器中表现一致.需要注意的是,每次partial Postback后,也就是每次UpdatePanel refresh后,pageLoad()都被调用.Application.Init()和PageRequestManager.EndRequest()都会调用pageLoad()pageLoad()一般用于操作UpdataPanel中的元素 ASP.NET AJAX Library提供的Sys.Application.init事件用于程序的初始化.仅在页面加载时执行一次.只能在ASP.NET AJAX初始化完成后是使用.否则会出现错误 “sys is undefined”

Posted in Web Development | Leave a comment

Ben Nadel jQuery讲座笔记

An Intensive Exploration Of jQuery With Ben Nadelhttp://www.bennadel.com/resources/presentations/jquery/video/index.htm UI Effects$(“p1”)选中一个UI element,然后调用:show()   show(time)   show(time, callback)hide() …toggle()…slideUp()…slidDown()…slidToggle()fadeIn()fadeOut(),fadeTo()animate({with: “100px”}, 1000). jQuery Foundations: Anonymous Method用于 event handler, call back , iteration jQuery Foundations: $() Factory Method$() 是 jQuery()的缩写 $(function)   在DOM元素load完毕后执行function. 多个$(function) 会顺序执行 $(elements)  返回包含给定element的jQuery … Continue reading

Posted in Web Development | Leave a comment

Value type一定要实现IEquatable接口

IEquatable<T>接口提供了Equals方法.如果Value Type 不实现IEquatable<T>接口, 当调用其实例上的Equals方法时,实际上使用的是Object.Equals()方法, 这会导致boxing操作,同时由于Object.Equals()使用了reflection操作,对性能也有影响.

Posted in 21条军规 | Leave a comment

Silverlight 和宿主HTML页面之间的交互

Sileverlight中运行的是Managed code, HTML中运行的是JavaScript代码,这两者如何交互? 一. 托管代码调用JavaScript,操作HTML元素在C#代码中操作HTML中元素主要依靠System.Windows.Browser.HtmlDocument 对象。1. 在Silverlight的Application_Startup中把C#代码的Envent handler "CallGlobalJSMethod”绑定到一个HTML button "btnCallJSMethod" 的click事件上private void Application_Startup(object sender, StartupEventArgs e) {    HtmlDocument doc = HtmlPage.Document;    doc.GetElementById("btnCallJSMethod").AttachEvent("click", new EventHandler(this.CallGlobalJSMethod));} 2.在Silverlight中的C#代码CallGlobalJSMethod中调用JavaScript方法private void CallGlobalJSMethod(object o, EventArgs e) {     string strTime = DateTime.Now.Millisecond.ToString();     HtmlPage.Window.Invoke("globalJSMethod", strTime);} … Continue reading

Posted in Web Development | Leave a comment

VS和Blend协同工作

Blend支持调用VS对Solution进行编辑,在Solution上点右键,选择 Edit in Visual Studio 即可 在VS2008中可以调用Blend来编辑XAML文件所在的Solution  此外也可以可以使用VS的External Tool功能来达到这个目的:选择Tools->External Tools, 添加一个名为Blend的菜单项 注意:Arguments 设置为 $(SolutionFileName), Initial directory 为 $(SolutionDir)

Posted in Web Development | Leave a comment

Silverlight.FX 学习

Nikihil Kothari 发布了一个轻型的Silverlight Frame work:http://projects.nikhilk.net/SilverlightFX以60k的代码量,提供了下述功能: 编程模型: Service model, Ioc container, M-V-VM模型, navigation 和 MVC, 旨在分离view和code UI控件:form,window,master page, layout, data bound Declarative 式编程: 在XAML中编写behavior, action, command… 动画特效,为控件添加Transition Effect 在Demo Silverlight Store 中, 演示了下列Feature: View Model pattern Simple/minimal IoC container Declarative Effects … Continue reading

Posted in Web Development | Leave a comment

WinDBG+SOSEX

Debug神人John Robbins对SOSEX青睐有加,大力推荐,我等岂可坐视?1. 为什么要使用SOSEX?SOSEX提供了哪些增强功能? SOS SOSEX !bpmd给Method加断点,作用于Methed的第一条指令 !bpsc clss.cs 123对源代码的某一行加断点 !bmpo在Type或Method的offset处加断点对使用Reflection.Emit的情况非常有用 !gcroot !refs <address>列出对象的引用者和被引用者 查看死锁:需要一系列命令的组合:!syncblk !syncblk command shows the native thread IDs !dlk   tells you the source and line of the deadlock. 查看本地变量和参数!clrstack –a !dso !vars   !dumpgen 2 –stat  … Continue reading

Posted in Debug | Leave a comment

A New Look for Visual Studio 2010

http://blogs.msdn.com/jasonz/archive/2009/02/20/a-new-look-for-visual-studio-2010.aspx 随着VS功能的增强,显示器屏幕显得越来越不够用,什么时候VS可以支持多显示器,可以把Design窗口Source窗口放在不同的显示器上? VS2010的Floating Documents功能就解决了这个问题!

Posted in Programming | Leave a comment