随笔-91  评论-81  文章-2  trackbacks-3
  2009年1月9日

今天在编写分离式JavaScript开发时产生的想法,其实这个问题早就有了而且一直都在困扰着执着的分离式编程写法的人们:

完全分离在实际工作中真的有必要吗?

在 a 标签 定义 onclick 事件,利用 cookie 实现判断用户是否登录。下面是部分代码:

var FavoriteClick = function() {
    
var links = document.getElementsByTagName('a');
    
if(!links) return;
    
for(i=0;i<links.length;i++) {
        
if(links[i].className == 'addToFavourite') {
            links[i].onclick 
= function() {
                IsCookieName(
'wy');
            };
        }
    }
}

上面就是利用DOM定位元素而写的,而这样的程序受算法复杂度而影响效率,所以,不分离式编程写法:用 onclick="FavoriteClick(this);"只需要短短的几行:

var FavoriteClick = function(obj) {
    
if(obj.className == 'addToFavourite') {
        IsCookieName(
'wy');
    }
    return false;
}

这种是DOM触发的事件,还无须等待载入完不完毕。

前端专家棕熊对效率和需求都能兼顾的一些想法(用代码说明):

<script type="text/javascript">
function demo(obj) {
    obj.value 
= Math.random();
}
</script>
<input type="button" value="demo" onclick="demo(this)" />
<input type="button" value="demo" onclick="demo(this)" />
<input type="button" value="demo" onclick="demo(this)" />

ps.本人执着于脚本分离式编程思想哦~!

posted @ 2009-01-09 16:08 George Wing 阅读(97) | 评论 (0)编辑
  2009年1月8日

参考了JS,用C#实现的windows应用程序,程序很简单,所以不完善:只能输入数字,不然会报错。

条件:需要 .net 2.0 运行环境

下载:

http://files.cnblogs.com/georgewing/%E4%B8%AA%E7%A8%8E%E8%AE%A1%E7%AE%97%E5%99%A8.rar

posted @ 2009-01-08 17:17 George Wing 阅读(152) | 评论 (0)编辑

第1部分 C# 和 .NET 平台简介

第1章 .NET之道

从第2章到第10章是C#语言的知识内容,在第1章中的程序集(assembly)在后面第11章详述,CIL (公共中间语言)在后面的第15章详述,BCL(基类库)编程在第四部分详述。这是本人关注的几个知识重点。

第9页:倒数第4行:“如果用ildasm.exe(后面章节会说明)”的括号中的内容是指本章的1.15节,在本书第21页。

该工具 ildasm.exe 名称为:MSIL 反汇编程序。

第2章 构建C#应用程序

这一章还没有讲C#语言的知识,内容是构建C#应用程序的各种工具。看这章让我想起了在阅读裘宗燕译的《程序设计实践》在译者序中的话: 功能强大的程序开发环境未必能造就出更优秀的程序员。下面摘抄该书译者序中的一两段:

“在我自己的教学实践中,遇到了许多学生是玩编程环境 的高手,但离程序设计高手却差得太远,他们对算法和数据结构、程序的架构设计和良好的编码的各种要素不太得要领,最熟悉的是排错和单步执行,最拿手的是程序打补丁。”
“一个十行程序就能解决的问题,他们要几十上百行甚至更多,而到最后自己也不知道做得到底对不对,只知道试过一些例子,单步执行无数遍,打了数不清的补丁。可悲的是,以这类活动方式 为编译要义的不只是这些学生,这种情况 不止是校园里,不止是在中国。”
也让我想起了在上海柏盛工作时,老赵用记事本极快的编写C#程序来讲解一个算法的实现。

posted @ 2009-01-08 11:25 George Wing 阅读(201) | 评论 (0)编辑
  2009年1月5日

在数据表的字段中我们将“是”或“否”设计成bit数据类型,我们会发现,bit 数据类型的值在 SQL Server 2005 Management Studio 中有个特点:

在设计表中值为0或1(见图1),而在打开表中值为False或True(见图2)。

图1

图2

要在web上显示该值,我们用强大的GridView数据绑定,用BoundField控件显示该列。在存储过程中,SQL脚本如下

Select , OnCatalogPromotion

From 某数据表

注(Note):... 为略写部分哦~

不用想也不用猜,ASP.NET 在网页中的情况是原样上数据值,是False就还是False,是 True 就还是True。而GridView几乎不可自定义编写BoundField显示的列值。看来想用代码编写是不太方便的了。

只好有请SQL脚本判断语句的帮忙了:

Select , (CASE WHEN OnCatalogPromotion = 0 THEN '' ELSE '' END) OnCatalogPromotion

From 某数据表

注意还要定义正确存储过程中此列的数据:

OnCatalogPromotion varchar(2)

网页中显示的便是“是”或“否”了。

另:GridView控件代码编写的方法见:

http://www.cnblogs.com/wcj1984abc/archive/2008/05/06/1185564.html

上面的部分只是简单的显示,接下来我们实现修改并更新的功能。

第一步:从数据表中得到该值后让 DropDownList 为该所选,再进行下拉的选择。

在DropDownList控件中已有了需要的两个选项:“是”和“否”。

下面是C#程序部分来实现我们分析的思路:

Code
if (OnCatalogPromotionValue == "True")
 {
      ddlOnCatalogPromotion.SelectedItem.Text 
= "";
 }
else
{
      
ddlOnCatalogPromotion.SelectedIndex = 1;
      ddlOnCatalogPromotion.SelectedItem.Text 
= "";
}

注意:SelectedItem有两个相关的属性:Text 与 Value 两者的不同。

然后是根据用户所选提交修改实现更新:

Code
string OnCatalogPromotionValue = ddlOnCatalogPromotion.SelectedValue.ToString();
if (OnCatalogPromotionValue == "")
{
    OnCatalogPromotionValue 
= "True";
}
else
{
    OnCatalogPromotionValue 
= "False";
}

最后,我们测试网页中显示的效果:

上图为“是”的网页显示效果。

posted @ 2009-01-05 16:55 George Wing 阅读(91) | 评论 (0)编辑
  2009年1月4日
    只有注册用户登录后才能阅读该文。阅读全文
posted @ 2009-01-04 15:00 George Wing 阅读(386) | 评论 (3)编辑
  2009年1月2日

在SQL Server 2005 存储如代码段这样的多行文本格式的数据类型不再是SQL Server 2000 的text数据类型,而是代替它而新增加的 nvarchar(Max)。那C#语言中怎么传这样的数据类型的大小(size)作的参数呢?有:Int32.MaxValue与之等价:

param.Size = Int32.MaxValue;

不然,如果赋个具体数值如:4000的话,就会造成web服务器的崩溃。

这是今天工作中的一点心得。

 

ps.今天写一篇闪博哦。

posted @ 2009-01-02 20:16 George Wing 阅读(91) | 评论 (0)编辑
  2008年12月31日

第22章:使用ADO.NET访问数据库

以下的读书笔记记了该章节 .NET 2.0 ADO.NET中新增的数据提供器工厂模式的内容。

22.7.2节:完整的数据提供器的例子

这一章节是用 Pubs,本人换用 SQL Server 2005 中示例数据库: AdventureWorks重写程序代码:

app.config部分:

Code
<appSettings>
    
<add key="provider" value="System.Data.SqlClient" />
    
<add key="cnStr" value="Data Source=localhost;uid=sa;pwd=;Initial Catalog=AdventureWorks"/>
  
</appSettings>

 

Main()方法部分:

Code
static void Main(string[] args)
    {
        
//从config文件中获取连接字符串和提供器
        
string dp = ConfigurationManager.AppSettings["provider"];
        
string cnStr = ConfigurationManager.AppSettings["cnStr"];
        
//得到工厂提供器
        DbProviderFactory df 
= DbProviderFactories.GetFactory(dp);
        
//得到连接对象
        DbConnection conn 
= df.CreateConnection();
        Console.WriteLine(
"Your connection object is a: {0}", conn.GetType().FullName);
        conn.ConnectionString 
= cnStr;
        conn.Open();
        
//得到命令对象
        DbCommand cmd 
= df.CreateCommand();
        Console.WriteLine(
"Your command object is a: {0}", cmd.GetType().FullName);
        cmd.Connection 
= conn;
        cmd.CommandText 
= "Select * From Purchasing.Vendor";
        
//从数据读取器输出数据
        DbDataReader dr 
= cmd.ExecuteReader(CommandBehavior.CloseConnection);
        Console.WriteLine(
"Your data reader object is a: {0}", dr.GetType().FullName);
        Console.WriteLine(
"\n*****Purchasing.Vendor in AdventureWorks");
        
while (dr.Read())
            Console.WriteLine(
"-> {0}", dr["Name"]);
        dr.Close();
    }

 

程序使用微软SQL Server 提供器来从 AdventureWorks 数据库的 Purchasing.Vendor 表中读取数据:

22.8节:<connentionStrings>元素

app.config文件修改部分:

Code
<connectionStrings>
  <add name="SqlProviderAdventureWorks" connectionString="Data Source=localhost;uid=sa;pwd=;Initial Catalog=AdventureWorks" providerName="System.Data.SqlClient"/>
</connectionStrings>

 

Main()方法修改部分:

Code
string dp = ConfigurationManager.ConnectionStrings["SqlProviderAdventureWorks"].ProviderName;
string cnStr = ConfigurationManager.ConnectionStrings["SqlProviderAdventureWorks"].ConnectionString;

 

22.9节:安装 Cars 数据库

Cars.sql 脚本文件在 SQL Server 2005 中运行时需要修改初始大小值。

注意粗体的部分:

Code
CREATE DATABASE [Cars]  ON (NAME = N'Cars_Data', FILENAME =N'C:\Program Files\Microsoft SQL Server\MSSQL\Data\Cars_Data.MDF' , SIZE = 3, FILEGROWTH = 10%

作者在书中是按 SQL Server 2000 创建数据库初始大小设置为2M的脚本。

 

本书资源:

源码下载页链接

posted @ 2008-12-31 00:04 George Wing 阅读(144) | 评论 (0)编辑
  2008年12月30日

语义化的ASP.NET代码:

Code
<div id="newTemplates">
    
<h2>网店装修</h2>
    
<ul>
    
<asp:Repeater ID="repeater1" runat="server">
        
<ItemTemplate>
            
<li>
                
<asp:HyperLink ID="TemplateImageHy1" NavigateUrl='<%#"~/Template/Details.aspx?TemplateID="+Eval("TemplateID") %>' runat="server">
                    
<asp:Image ImageUrl='<%#"~/admin/"+ Eval("ViewImage")%>' runat="server" />
                    
<asp:Label ID="lTemplateName" Text='<%#Eval("TemplateName") %>' runat="server" />
                
</asp:HyperLink>
            
</li>
        
</ItemTemplate>
    
</asp:Repeater>
    
</ul>
    
<href="../Template/index.aspx" class="more" title="更多">更多〉〉</a>
</div>

关注Web标准的朋友可以看到 ASP.NET 2.0 的完美呈现能力。

ps.最近很忙哦,发篇内容没太多营养的贴勿怪哦。。。

posted @ 2008-12-30 16:40 George Wing 阅读(191) | 评论 (3)编辑
  2008年12月21日
     摘要: 摘抄几段: 美国国家航空航天局就因为在设计阶段溜进了一个Bug而损失了一个火星航天探测器。 GPS软件中的电池更换所产生的一个程序错误导致了一枚炸弹偏离其原定目标而砸向了美国特种部队士兵。 微软发布了一个程序补丁以挽救之前一个程序补丁造成的微软IE 6上的巨大缓冲区溢位漏洞。 尽管Bug开始逐渐地受到应有的关注,但距离我们形成一种高度重视Bug,并不再将其视为开发过程中不可避免的小问题的开发氛围,我们还有很长的路要走。 即便你有计算机专业的学位,我打赌在你的大学里从没有一门课程是专门针对调试过程的。除了一些诸如设计某些根本没有人用的语言的自动程序校验之类的神秘兮兮的课程,或者为盲目乐观的超大平行进程计算机开发的调试器之外,对应用于商业软件的调试科学似乎从来都不大受教育机构的欢迎。  阅读全文
posted @ 2008-12-21 09:27 George Wing 阅读(77) | 评论 (0)编辑
  2008年12月18日

关系型数据库的并(UNION)可以将多个查询语句的结果合并成一个结果。这是开发应用人员所看到的现象的表述。

并是关系代数中的 UNION ,实际应用在 SQL Server 2005中数据表的查询。我们在存储过程中用到了:

Code
SELECT ArticleID, ArticleTypeID, MainTitle, SubTitle, ArticleDesc, ArticleContent, Url, Author, Original, AddDate
FROM Article.tb_ArticleDetails
WHERE ArticleTypeID = 1
UNION
SELECT ArticleID, ArticleTypeID, MainTitle, SubTitle, ArticleDesc, ArticleContent, Url, Author, Original, AddDate
FROM Article.tb_ArticleDetails
WHERE ArticleTypeID = 2
UNION
SELECT ArticleID, ArticleTypeID, MainTitle, SubTitle, ArticleDesc, ArticleContent, Url, Author, Original, AddDate
FROM Article.tb_ArticleDetails
WHERE ArticleTypeID = 3

上面的代码中 Article.tb_ArticleDetails 是:架构名.数据表名。

在 WHERE 语句中用 OR 结果等价:

Code
SELECT ArticleID, ArticleTypeID, MainTitle, SubTitle, ArticleDesc, ArticleContent, Url, Author, Original, AddDate
FROM Article.tb_ArticleDetails
WHERE ArticleTypeID = 1 OR ArticleTypeID = 2 OR ArticleTypeID = 3

 

 

posted @ 2008-12-18 16:06 George Wing 阅读(98) | 评论 (0)编辑