02 Mar 2007

拎个这样的手提袋上街,肯定好多眼球

01 Dec 2006

在写自定义控件时,如果控件某个属性允许被验证控件验证,需要注意微软在 WebUIValidation.js内的实现。

微软在WebUIValidation.js(System.Web的资源文件内自己找工具看吧)
内有如下代码:

function ValidatorGetValue(id) {
    
var control;
    control 
= document.getElementById(id);
    
if (typeof(control.value) == "string") {
        
return control.value;
    }
    
return ValidatorGetValueRecursive(control);
}
function ValidatorGetValueRecursive(control)
{
    
if (typeof(control.value) == "string" && (control.type != "radio" || control.checked == true)) {
        
return control.value;
    }
    
var i, val;
    
for (i = 0; i<control.childNodes.length; i++) {
        val 
= ValidatorGetValueRecursive(control.childNodes[i]);
        
if (val != ""return val;
    }
    
return "";
}


当自定义控件为符合控件,比如两个或多个DropDownList组合而成
而有一个Value属性来返回这几个DropDownList的返回选项,并且设置了ValidationPropertyAttribute去验证某个属性,如:
[ValidationPropertyAttribute( "Value" )]
当使用验证控件验证的时候,由于上面脚本在控件没有客户端value的时候返回的为第一个value不为空的ChildNode的value
值,这样用来验证,可能不是我们所需要的。
比如我需要非空验证控件来验证我的自定义控件所有的DropDownList都必须被选择时候,如果第一个有了选择,则该脚本认为验证通过了,叶面可以PostBack然而,在服务器端Page.IsValidata属性是false的。
我用了一个非常ugly的方法,在控件外层放一个父容器(可以通过override TagKey 来指定)span
在每个DropDownList的客户端onchange的时候 判断 如果 任一个没有选择,那么置span的value = ‘’;
当全部选择的时候再将span.value = 实际的值 ,这样就不会出现客户端验证通过,然而服务器端验证没有通过才出来ErrorMessage的情况了。

但是总觉得 这样非常的ugly,如果有其他朋友也遇到过这样的问题,欢迎讨论。

19 Nov 2006

Test live writer

Test live writer

19 Nov 2006

Test remote images for live writer

 

何设置能使远程图片直接上传呢  衰锅就是这样的 :-)

21 Sep 2006

好像是 sqlserver mangage studio express 的bug

sqlserver 2005 express
使用 sqlserver mangage studio express

创建一个测试用表
CREATE TABLE [dbo].[test](
 [id] [int] IDENTITY(1,1) NOT NULL,
 [name] [varchar](50) COLLATE Japanese_CI_AS NULL
) ON [PRIMARY]

执行 insert test ([name]) values('sdfsdf');  多次。

创建一个存储过程
create PROCEDURE [dbo].[xxx]


AS
update test set [name] = 'aaa' where id =  2


然后

ALTER PROCEDURE [dbo].[xxx]


AS
update testxx32453463465346436x set [name] = 'aaa' where id =  2

竟然不进行语法检查,而且执行成功了

执行被alter过的过程时才会报错误

Msg 208, Level 16, State 1, Procedure xxx, Line 10
对象名  'testxx32453463465346436x ' 无效。


(1 row(s) affected)

11 Aug 2006

给Visual Studio 2005设置一个代码边界线,提醒自己,别写的太长哦。

Codeproject上有一个关于代码宽度的调查
http://www.codeproject.com/script/survey/detail.asp?survey=590&df=100&forumid=305784&select=1615639#xx1615639xx

其中的评论中有人贴到下面这个地址
http://blogs.msdn.com/saraford/archive/2004/11/15/257953.aspx
照着做 改了注册表
设定RGB(255,0,0) 5, 105 
嘿嘿 红线出来了。
图就不抓了 用原作者图

 

Guidelines at columns 5 and 30

29 Jul 2006

好东西,程序员是这样喝酒的

大家喝的是啤酒。这时你入座了。 


你给自己倒了杯可乐,这叫低配置。 


你给自已倒了杯啤酒,这叫标准配置。 


你给自己倒了杯茶水,这茶的颜色还跟啤酒一样,这叫木马。 


你给自己倒了杯可乐,还滴了几滴醋,不仅颜色跟啤酒一样,而且不冒热气还有泡泡,这叫超级木马。 


你的同事给你倒了杯白酒,这叫推荐配置。 



人到齐了,酒席开始了。 


你先一个人喝了一小口,这叫单元测试。 


你跟旁边的人说哥们咱们随意,这叫交叉测试。 


但是他说不行,这杯要干了,这叫压力测试。 


于是你说那就大家一起来吧,这叫内部测试。 


这个时候boss向全场举杯了,这叫公开测试。 



菜过三巡,你就不跟他们客气了。 


你向对面的人敬酒,这叫p2p. 


你向对面的人敬酒,他回敬你,你又再敬他……,这叫tcp. 


你向一桌人挨个敬酒,这叫令牌环。 


你说只要是兄弟就干了这杯,这叫广播。 


可是你的上司jj听了不高兴了,只有兄弟么,罚酒三杯。这叫炸弹。 


可是你的下级mm听了不高兴了,我喝一口,你喝一杯,这叫恶意攻击。 


有一个人过来向这桌敬酒,你说不行你先过了我这关,这叫防火墙。 


你的小弟们过来敬你酒,这叫一对多。 


你是boss,所有人过来敬你酒,这叫服务器。 



酒是一样的,可是喝法是不同的。 


你喝了一杯,boss喝了一口,这叫c#。 


你喝了一杯,mm喝了一口,这叫vb。 


你喝了一杯,你大哥喝了半杯,这叫c++。 


你喝了半杯,你小弟喝了一杯,这叫汇编。 


你喝了一杯,你的搭档也喝了一杯,这叫c。 



酒是一样的,可是喝酒的人是不同的。 


你越喝脸越红,这叫频繁分配释放资源。 


你越喝脸越白,这叫资源不释放。 


你已经醉了,却说我还能喝,叫做资源额度不足。 


你明明能喝,却说我已经醉了,叫做资源保留。 


你喝一段时间就上厕所,这叫cache。 



酒过三巡,你也该活动活动了。 


你一桌一桌的走,这叫轮巡。 


你突然看到某一桌的漂亮mm,走了过去,这叫优先级。 


你去了坐下来就不打算走了,这叫死循环。 


你的老大举杯邀你过去,你只好过去,这叫激活事件。 


你向一桌敬酒,他们说不行不行我们都喝白的,于是你也喝白的,这叫本地化。 


你向boss敬酒,可是boss被围了起来,你只能站在外圈,这叫排队。 


你终于到了内圈,小心翼翼的向前一步,这叫访问临界区。 


你拍着boss的肩膀说哥们咱们喝一杯,这叫越界。 


你不知喝了几圈了,只会说两个字,干了,这叫udp。 


可是还有人拿着酒瓶跑过来说,刚才都没跟你喝,这叫丢包。 



喝酒喝到最后的结果都一样 


你突然跑向厕所,这叫捕获异常。 


你在厕所吐了,反而觉得状态不错,这叫清空内存。 


你在台面上吐了,觉得很惭愧,这叫程序异常。 


你在boss面前吐了,觉得很害怕,这叫系统崩溃。 


你吐到了boss身上,只能索性晕倒了,这叫硬件休克。

from:
http://community.csdn.net/Expert/topic/4910/4910780.xml?temp=.4186212

03 Jul 2006

code-beside方式绑定GridView后EnableSortingAndPagingCallbacks不工作

今天对GridView的学习中发现 当用 code-beside方式绑定GridView后(比如我绑一个DataTable)
EnableSortingAndPagingCallbacks不起作用。
在下面地址找到 一些说法

http://forums.asp.net/thread/1230450.aspx

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=103040
记之…

 1    <asp:GridView id=“Gridviewex1” 
 2    runat=“server” 
 3    AllowSorting=“True” 
 4    AutoGenerateColumns=“False”
 5    EnableSortingAndPagingCallbacks=“True” 
 6    OnSorting=“Gridviewex1_Sorting”>
 7        <Columns>
 8            <asp:BoundField DataField=“ProductId” HeaderText=“ProductId” SortExpression=“ProductId” />
 9            <asp:BoundField DataField=“ProductName” HeaderText=“ProductName” SortExpression=“ProductName” />
10            <asp:BoundField DataField=“QuantityPerUnit” HeaderText=“QuantityPerUnit” SortExpression=“QuantityPerUnit” />
11            <asp:BoundField DataField=“UnitsInStock” HeaderText=“UnitsInStock” SortExpression=“UnitsInStock” />
12            <asp:BoundField DataField=“ReorderLevel” HeaderText=“ReorderLevel” SortExpression=“ReorderLevel” />
13            <asp:BoundField DataField=“Discontinued” HeaderText=“Discontinued” SortExpression=“Discontinued” />
14        </Columns>
15    </aspx:GridView>
 1    protected void Page_Load(object sender, EventArgs e)
 2    {
 3
 4        if (!Page.IsPostBack)
 5        {
 6            this.BindGrid(string.Empty);
 7        }

 8    }

 9
10    private void BindGrid(string sortExpression)
11    {
12        DataTable dt = new DataTable();
13        SqlConnection conn = new SqlConnection();
14        conn.ConnectionString = server=wumeibo\wmb;database=northwind;uid=sa;pwd=sa;;
15        SqlCommand cmd = new SqlCommand();
16        cmd.Connection = conn;
17        cmd.CommandType = CommandType.Text;
18        cmd.CommandText = select * from products;
19        SqlDataAdapter adapter = new SqlDataAdapter();
20        adapter.SelectCommand = cmd;
21        adapter.Fill(dt);
22        DataView dv = dt.DefaultView;;
23        if (!string.IsNullOrEmpty(sortExpression))        
24        {
25            dv = dt.DefaultView;
26            dv.Sort = sortExpression;
27        }

28        this.Gridviewex1.DataSource = dv;
29        this.Gridviewex1.DataBind();
30        
31    }

32    protected void Gridviewex1_Sorting(object sender, GridViewSortEventArgs e)
33    {
34        BindGrid(e.SortExpression);
35    }

经过测试 如下方法 可用

 1     protected void Page_Load(object sender, EventArgs e)
 2     {
 3             xx();
 4         
 5     }
 6 
 7     private void xx()
 8     {
 9         SqlConnection conn = new SqlConnection();
10         conn.ConnectionString = server=wumeibo\wmb;database=northwind;uid=sa;pwd=sa;;
11    
12         SqlDataSource source = new SqlDataSource();
13         source.ConnectionString = server=wumeibo\wmb;database=northwind;uid=sa;pwd=sa;;
14         source.SelectCommand = select * from products;
15 
16         this.Gridviewex1.DataSource = source;
17         this.Gridviewex1.DataBind();
18     }

29 Jun 2006

还记得 Page.SmartNavigation 属性么,此属性已被否决。

还记得在.Net 1.x 中我们为了保持在页面回发后 保持滚动条位置的做法么?
Page.SmartNavigation 可以做到,但会带来这样那样的问题。
我们也曾经用这样那样的方法实现这个效果,如:

http://huobazi.cnblogs.com/archive/2004/09/20/ScrollPage.aspx
http://www.cnblogs.com/birdshome/archive/2004/12/13/76521.html

在.Net 2.0 中,该类型被描述为:
 
[ObsoleteAttribute("The recommended alternative is Page.SetFocus and Page.MaintainScrollPositionOnPostBack. http://go.microsoft.com/fwlink/?linkid=14202")]
public bool SmartNavigation { get; set; }


注意:此属性现在已过时。

 

获取或设置指示是否启用智能导航的值。

同时在备注内有提到:

SmartNavigation 属性已被否决。请改用 SetFocus 方法和 MaintainScrollPositionOnPostback 属性。

园子里birdshome 也早有post了 SmartNavigation在Fx2.0中下岗了

25 May 2006

比尔盖茨的又一个网站

 


http://www.iis.net/default.aspx?tabid=1