Archive

Archive for the ‘Web’ Category

Gridview编辑状态下CheckBoxList和DropDownList数据绑定

July 3rd, 2009 Tony hu No comments

这两天老老大在泰国,我做的POP系统需要让我增加两个功能,其中就用到了在Gridview编辑状态下控件绑定数据库的问题,查询了相关资料后终于搞定了。将主要的代码写在这里,记录一下。

主要就是一个:
e.Row.RowState == DataControlRowState.Edit ||
            e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit
我觉得主要是用来判断Gridview的行的状态,之前没有加这个条件,所以一直是没有绑定到对象之类的错误提示。 

主要的代码:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    //判断是否是DataRow,以防止鼠标经过Header也有效果
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //行的状态是: 编辑状态 或者 (交替行且是编辑状态)
        if (e.Row.RowState == DataControlRowState.Edit ||
            e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit)
            )
        {
            //下面是绑定CheckBoxList,根据Gridview中的显示的值,更改CheckBoxList的选中状态
            Label lab = (Label)e.Row.FindControl(“TxtPrinter”);
            CheckBoxList chk = (CheckBoxList)e.Row.FindControl(“OperatorList”);                   
            string txtPrinter = lab.Text;
            if (txtPrinter != “”)
            {
                for (int i = 0; i < chk.Items.Count; i++)
                {
                    if (txtPrinter.IndexOf(chk.Items[i].Text.ToString()) >= 0)
                    {
                        chk.Items[i].Selected = true;
                    }
                }
            }
            //下面是绑定DropDownList,根据Gridview Cells中显示的内容查找数据库,如果存在相关信息就显示DropDownList,并绑定
            DropDownList printroll = (DropDownList)e.Row.FindControl(“PrintRollList”);
            TextBox txt_printroll = ((TextBox)e.Row.FindControl(“txtPrintroll”));
            BLL.printroll bll = new BLL.printroll();
            string pid = bll.GetID(txt_printroll.Text.Trim());
            if (pid == “–”)
            {
                printroll.Visible = false;
            }
            else
            {
                DataTable dt = bll.GetChildList(Convert.ToInt32(pid));
                if (dt.Rows.Count != 0)
                {
                    printroll.DataSource = dt;
                    printroll.DataTextField = dt.Columns["printroll"].ToString();
                    printroll.DataValueField = dt.Columns["printroll"].ToString();
                    printroll.DataBind();

                    printroll.Items.Insert(0, “–PrintRoll–”);
                    printroll.Items[0].Value = “0″;
                    printroll.Visible = true;
                }
            }                   
        }
    }

}

Categories: ASP.net, Web Tags:

DIV + CSS 和 TABLE

June 21st, 2009 Tony hu 1 comment

作为一个身处 2008 年末的 Web 设计师,你是否好意思承认自己的代码中使用了 Table,如果是,你是一个有勇气的人,Web 设计是个奇怪的行业,你可以将自己的网站设计得像晚报的分类广告,或者楼道里的开锁广告,但千万别让人知道你使用了 Table,在你的源代码中发现 Table 就像一个销售被人掀起裤脚发现穿了白袜子一样。
Table 是如此丑陋,臃肿,哪怕只显示一段简单的内容,你也需要 <table><tr><td> 这三个基本的标签,每个标签里面还要加上一堆乱七八糟的属性,不像<div>,既简单,又整洁,又时尚,它和 CSS 珠联璧合,琴瑟和谐,它们构成最完美的 Box 模型,他们象现实中的箱子,你把东西放进去,然后,很自由地对他们进行排列,厌烦了一种布局,没关系,简单地改动一下 CSS 定义,一种全新的布局便诞生了;不象 Table,Table 像食堂里的餐具柜,一排排,一列列,土里土气,油腻腻的,象我们的父辈,邋遢,什么都往家里拿,胡乱堆在角落里,如果 Div 是小资,Table 就是老三届,他们不属于这个时代。
  也就是近几年的事,至多不过三五年,W3C是一个人人都认为重要但人人都不喜欢的组织,他们的官方网站十分丑陋,我敢说平生没见过这么丑陋的网站,但他们的网站是为数不多的可以通过全部W3C标准验证的网站,这意味着,他们的网站在语法上,在结构上,在可访问性上是完美的,虽然依旧十分丑陋。不过这是笑谈,W3C非常重要,否则微软会把全体 Web 开发工程师带到万劫不复的境地,还好,Netscape 死后,涅磐出 Firefox,而 Opera 在 Firefox 横空出世之后虽然没得到任何好处,至少得到了精神上的支持,看到没,终于有大哥出来收拾你。乔布斯复出后,苹果重返昔日的光芒,这时人们才知道世界上还有一个叫做 Safari 的浏览器,所有这一切加在一起,让 W3C 真正有了存在的必要。

  W3C 说,Table 可以用来容纳文字,格式文字,图片,链接,表单,以及其它 Table … 但是,Table 不应该单纯用来做网页布局(Tables should not be used purely as a means to layout document content),理由是,当 Web 被非可视化设备渲染的时候,Table 会出现问题,他们指定是屏幕阅读器以及盲文浏览器,另外,Table 在大型显示设备上会强迫用户左右滚动,因此,Web 设计者应该使用 CSS 而不是 Table。参见 W3C HTML 4.01 关于 Table 的定义。 W3C 说这段话的时候,是1999年12月24日,那时尽管 CSS 早已诞生,但并没有多少人使用,最初的 Web 像一个在线版的文档,并没有成为现在这样的平台,不需要过多过多地考虑布局问题,随着互联网第一次泡沫的形成,涌现出大量的门户网站,门户网站是 Table 布局的始作俑者,因为他们的首页比一整份报纸的所有版面拼接在一起还复杂,Table 在这方面十分顺手,结合 colspan 和 rolspan,你几乎能够实现任何复杂的版面。

  这种布局风格在2000年代初,一直到中期仍然十分流行,尤其国内,在大为美的潜意识下,人们把所有能塞到一个页面的东西都塞进了首页,Table 就像一个旧时代的管家,把所有东西虽不能井井有序,但至少是一样不少地编排起来。然而这样的 Web 终于到了让人厌恶的地步,随着搜索,RSS 订阅,以及以博客为代表的个性化 Web 的出现,人们有更多渠道获得信息,而不必去访问那几个让人几乎要晕过去的门户的首页,于是出现了一种清新的,轻量的 Web 风,使用更简单的布局,更明快的配色,大图标,大 Banner,以及更容易阅读的大字体,同时,在这个时候,CSS 已经非常成熟,而 Firefox, Opera, Safari 为代表的浏览器,在遵守 W3C 标准方面要远远好过 IE,人们终于认识到 CSS 的威力。因为 CSS 在布局上,其核心是一个 Box 模型,人们必须为 CSS 找一个可以依附的容器对象。

  Div 成为幸运者一方面因为它天生就是 Box 的最佳原型,在语义上,Div 代表页面的一个区域,在外形上,它四四方方,更重要的是,它不像 <P> 或 <a> 那样事先已经被赋予特殊的语义(虽然它们也能用于 Box 模型);另一方面,则出于人们对 Table 统治一个臃肿时代的憎恶,一个时代的结束,继任者都会努力抹去旧时代的痕迹,那些旧时代的象征或代表的命运多半如此,人们并不是简单地忘却它们,而是断然划清界限。

  Table 的一切不公平待遇就此开始。为什么说不公平,W3C 不建议 Table 布局的时候,只说应使用 CSS 代替,这是什么意思,Table 不支持 CSS 吗?当然支持,而且,由于 Table 作为老牌的 HTML 对象,它的地位曾如此重要,任何浏览器都对 Table 提供了最完美的支持,包括 CSS 支持。当人们拥抱 Div 的时候,似乎忘记了 Table 也是 Box,而且是一个拥有多个内格的 Box,Table 作为一个整体,和 Div 在 Box 模型方面没有任何区别,而它的内格,除了 Margin 之外,仍然是一个 Box,内格不含 Margin 概念这是应该理解的。Div 很优秀这不必说,然而当人们说 Div + CSS 的时候,似乎暗示着 Table 无法 CSS,这是天大的误会。

  Div 支持的所有 CSS 属性,Table 全部支持,事实上,在 Div 大红大紫之前,那些 Div 的早期采用者曾信心不足地表示,Table 能做到,Div 都能,而他们也为自己的话付出了代价,企图在 Div 中实现垂直居中的人明白我的意思,企图在 IE6 中不经 CSS Hack 而实现 100% Div 布局的人更明白我的意思。100% Height 问题,几个 Div 之间的宽度自适应问题,相信任何从事 Div + CSS 设计的人会遇到。Table 在这方面的优势并不是因为它本身多么优秀,而是因为它老牌,没有浏览器敢忽视,也因为它的特性原本如此,人们发明表格,是因为希望数据显示得整齐,就这么简单。然而,为什么 Table 后来背上那么多的恶名?Div 拥护者对 Table 的责难不外乎以下几条。
  代码臃肿:你至少需要写下 <table><tr><td>这三个标签之后,才能开始真正的内容,另外,Table 的各种标签中还包含了复杂的属性定义,而 Div 只需 <div>一个标签。
页面渲染性能问题:浏览器需要将整个表格完全读完后才会开始渲染。
不利于搜索引擎优化:搜索引擎喜欢内容与修饰分开。
可访问性差:屏幕朗读软件和盲文浏览器无法很好地理解 Table 中的内容。
不够语义(Semantic):我们需要语义的 Web。

  第1条:代码臃肿

  首先,Table 里面唯一无法用 CSS 定义的属性只有 Cellspacing, Cellpadding 几个,其它属性都可以并且应当使用 CSS,这样,剩下的,就是 <table><tr><td> 和 <div> 的对决,我相信一个动辄几十K大小的网页,即使使用了几十个 Table,因此多出来的代码也可以忽略不计,那些埋怨 Table 代码臃肿的人其实该检查自己的编码习惯,能将 Table 写得十分臃肿的人,写 Div 相比也未必会简洁到哪里。

  第2条:页面渲染性能问题

  我使用一台2004年的笔记本电脑,1.6G 的 CPU 与 1G 内存,这种配置下,看不出 Table 布局和 Div 布局在页面渲染上有任何速度差别,其实这点差别即使有,相对网络本身的延迟也可以忽略。

  第3条:不利于搜索引擎优化

  如果你尽可能使用 CSS 而不是 Table 的属性,前面说了,产生的代码和 Div 的差别也不会很大,搜索引擎会歧视 <table> 标签吗,这种说法的依据我至今并没有找到。

  第4条:可访问性差

  这是 Table 固有的缺陷,不过多数 Div + CSS 的拥趸似乎并不是基于这个原因才排斥 Table。

  第5条:不够语义

  语义 Web 的含义要深远得多,并不是仅仅在 Table 和 Div 上纠缠,即使 W3C,也并没有规定 Table 只能用来显示表格数据,很多在 Table 的语义上进行纠缠的人,其实不妨再等等 HTML 5,那才是真正的语义。

  本文的目的不是让你丢弃 Div 投身 Table,相反,如果 Div 能满足你的设计需要,Div 仍是首选,但没必要避讳 Table,否则会走入另外一个极端。很多使用 Div 无法简单实现的设计,仍可以使用 Table,当然,不管使用什么,都应该用 CSS 将内容与修饰分离。Div + CSS 和 Table + CSS 都是合法的设计,谁更简单就用谁。根据我的经验,当你能预见你的内容的格式,对你即将加入的内容有能力完全控制其显示格式时,应当使用 Div + CSS;当你即将加入的内容是不固定的,你无法预见其格式,如果不想让页面坍塌,使用 Table + CSS 是一种保险的做法。

源文: http://hi.baidu.com/jmtbai/blog/item/ffd06ca62fc3179dd043588b.html

Categories: Web, Web standard Tags: ,

什么是web标准

June 21st, 2009 Tony hu No comments

WEB标准

WEB标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为(Behavior)。对应的标准也分三方面:结构化标准语言主要包括XHTML和XML,表现标准语言主要包括CSS,行为标准主要包括对象模型(如W3C DOM)、ECMAScript等。这些标准大部分由W3C起草和发布,也有一些是其他标准组织制订的标准,比如ECMA(European Computer Manufacturers Association)的ECMAScript标准。我们来简单了解一下这些标准:

1.结构标准语言

(1)XML

XML是The Extensible Markup Language(可扩展标识语言)的简写。目前推荐遵循的是W3C于2000年10月6日发布的XML1.0,参考(www.w3.org/TR/2000/REC-XML-20001006)。和HTML一样,XML同样来源于SGML,但XML是一种能定义其他语言的语。XML最初设计的目的是弥补HTML的不足,以强大的扩展性满足网络信息发布的需要,后来逐渐用于网络数据的转换和描述。关于XML的好处和技术规范细节这里就不多说了,网上有很多资料,也有很多书籍可以参考。

(2)XHTML

XHTML是The Extensible HyperText Markup Language可扩展标识语言的缩写。目前推荐遵循的是W3C于2000年1月26日推荐XML1.0(参考http://www.w3.org/TR/xhtml1)。XML虽然数据转换能力强大,完全可以替代HTML,但面对成千上万已有的站点,直接采用XML还为时过早。因此,我们在HTML4.0的基础上,用XML的规则对其进行扩展,得到了XHTML。简单的说,建立XHTML的目的就是实现HTML向XML的过渡。

2. 表现标准语言

CSS是Cascading Style Sheets层叠样式表的缩写。目前推荐遵循的是W3C于1998年5月12日推荐CSS2(参考http://www.w3.org/TR/CSS2/)。W3C创建CSS标准的目的是以CSS取代HTML表格式布局、帧和其他表现的语言。纯CSS布局与结构式XHTML相结合能帮助设计师分离外观与结构,使站点的访问及维护更加容易。

3.行为标准

(1)DOM

DOM是Document Object Model文档对象模型的缩写。根据W3C DOM规范(http://www.w3.org/DOM/),DOM是一种与浏览器,平台,语言的接口,使得你可以访问页面其他的标准组件。简单理解,DOM解决了Netscaped的Javascript和Microsoft的Jscript之间的冲突,给予web设计师和开发者一个标准的方法,让他们来访问他们站点中的数据、脚本和表现层对像。

(2) ECMAScript

ECMAScript是ECMA(European Computer Manufacturers Association)制定的标准脚本语言(JAVAScript)。目前推荐遵循的是ECMAScript 262(http://www.ecma.ch/ecma1/STAND/ECMA-262.HTM)。

源文:http://www.w3cn.org/what/

Categories: Web, Web standard Tags:

详解VisualStudio使用技巧二

June 11th, 2009 Tony hu 1 comment

怎样使用书签?
怎样使用即时窗口来显示变量或执行方法?
怎样在硬盘中快速找到项目中的文件?
怎样快速调整文档或某段代码的格式?
怎样快速把文件加入到项目中?
怎样强制调用智能提示?
怎样强制调用参数信息?
怎样跳转到指定的行?

怎样使用向前定位及向后定位快捷键?
怎样快速切换不用的页面?
怎样快速隐藏或显示当前代码段?
怎样同时修改多个控件的属性?
怎样录制与播放临时宏?

 

9.怎样使用书签来快速找到自己的文件?

     如果你在开发一个中、大型项目,如果你的解决方案下面包含很多工程,如果你拥有很多的页面,那么要想快速找到想要的某个页面是不是很麻烦,层层目录去找?太慢了,何况要还要让你去找某个页面中的某段代码呢?!

     VS中的书签功能能够很好地解决这一问题。首先把光标放到需要标记书签的代码处,然后点击VS中的插入书签按钮,就完成了设置书签的操作。也可以使用设置书签的快捷键:Ctrl+B,Ctrl+T来完成书签的设置或取消。

见图:

书签设置好之后,直接在书签列表中双击你设置的书签就能直接跳转到想要的代码段了。提醒一下,你可以自己重命名书签的名字呀,很方便吧。

10.怎样使用即时窗口来调试程序?

     这个即时窗口的用途就不用说了,大家可能都知道,但是好多人却因为不小心关掉了这个窗口而再想使用它时却怎么找也找不到。

     想一想,既然是即时窗口肯定是在调试的时候才有用,那么怎样打开它呢?调试——窗口——即时窗口,或快捷键:Ctrl+D,I

11.怎样在硬盘中快速找到项目中的文件?

     如果你在使用VS,想拷贝项目中的某个文件,不要再去硬盘中一个目录一个目录深入了,在VS中打开该文件,然后右键该选项-打开所在的文件夹即可,见图:

     

     

12.怎样快速调整文档或某段代码的格式?

     现在大家写代码都喜欢拷代码,可是拷过来的代码有时候毕竟不像写的那样格式很正确,排的很整齐,怎麽办?手动一行一行地调整?不用!

交给VS来做这无聊的工作吧:选择编辑——高级——设置文档的格式 或 编辑——高级——设置选中代码的格式。有了它再也不怕代码排版不美观了。

13.怎样快速把文件加入到项目中?

     打开VS,直接把文件粘贴到想要放置的文件夹中即可。

14.怎样强制调用智能提示?

     如果没有VS的只能提醒,估计好多人都不会写代码了。可是智能提醒又不是能够让我们随心所欲地使用,过了那个时候你鼠标再怎么移动它都不会出来,搞的我们有时候不得不把原来写的代码删除一部分重新点个”.”来调用智能提醒。

     其实VS中有个快捷键,能够真正让我们达到随心所欲,想什么时候看智能提醒就什么时候看。

     把光标放到想调用智能提醒的地方,然后输入Ctrl+J,看吧,熟悉的智能提醒又出来了。见图:

     

15.怎样强制调用参数信息?

     一个方法的参数信息也是很重要的,可是它有时候会使哦我们存在和14条中相同的困惑。怎样让我们“想看就看”呢?

     记住这个快捷键:Ctrl+Shif+空格,让你想看就看。 光标放到参数名上面,然后输入Ctrl+Shif+空格,看看什么出来了:

     

16.怎样跳转到指定的行?

     两种方法,能够快速定位到文档中的某一行:1.Ctrl+G  2.单击状态栏中的行号,如下图:

     

17.怎样使用向前定位及向后定位快捷键?

     相信VS中的“转到定义”大家都喜欢用,可是转到定义之后怎么能够快速地转回来呢?下面这个快捷键会节省你“转回来”的时间:

     Ctrl+_ 。如果你转回来之后还想转到定义,直接输入:Ctrl+Shif+_ 就好了。来回切换吧,想怎么看就怎么看。

     如果你说这样看着太累了,那再告诉你一个更简洁的方法:打开:视图——代码定义窗口,然后你再在页面中把鼠标点到某个方法上,看看代码定义窗口中显示的是什么:

     

18.怎样快速切换不用的页面?

     Window中切换不同的窗口的快捷键你知道吧:Alt+Tab,那么VS中也有:Ctrl+Tab,看看效果吧:

     

19.怎样快速隐藏或显示当前代码段?

     Ctrl+M,M
20.怎样同时修改多个控件的属性?

     选中多个控件,然后右键属性,这个时候这些控件共有的属性就会出现,修改之后所有的控件都会变化。
21.怎样录制与播放临时宏?

     如果你在VS中需要不断重复一系列键盘操作的时候,这个时候你可以考虑让VS自己写代码了。使用VS中的宏功能,把你的一系列需要不断重复的键盘操作给录制下来,然后直接执行宏就能让VS自己写代码了。

     录制:工具-宏-记录临时宏,Ctrl+Shif+R
     播放:工具-宏-运行临时宏,   Ctrl+Shif+P 
     保存:工具-宏-保存临时宏.,可以重命名宏

     

     后记:OK,这个系列写完了,对VisualStudio你更熟悉了吗?“工欲善其事,必先利其器”,让我们拿起VisualStudio这把利器,打造更美好的明天吧!That’s all.

来自:http://www.cnblogs.com/qqflying/archive/2008/11/24/1337489.html

Categories: ASP.net, Web Tags: , ,

详解VisualStudio使用技巧一

June 11th, 2009 Tony hu No comments

     VisualStudio虽然大家每天都在使用它,但是可能有些功能的使用大家并不清楚,甚至不知道有这项功能,下面这些技巧可能会对你有所帮助。

     先上目录:

     第一节:

     怎样给自己的代码添加版权信息。
     怎样给自己的代码添加代码段。
     怎样使用任务管理器。
     怎样使用发布网站功能。
     怎样把常用代码放到工具箱中的常规选项中。
     怎样怎样在多个窗口查看同一个文档。
     怎样创建区域,方便代码阅读及维护?
     怎样创建矩形选区?

     下面就一条一条来详解:

     1.怎样给代码添加版权信息。

     写代码经常会要写一些版权信息、或者一些常用的命名空间引用,如果每个页面都拷贝粘贴一遍,确实挺麻烦的。有什么可以让我们一劳永逸的办法呢?vs中的模板功能来可以帮助我们达到这个目的。

     解决办法:   直接把D:Program FilesMicrosoft Visual Studio 8Common7IDEItemTemplates文件夹中的相应的模板压缩包Copy到C盘的My DocumentsVisual Studio 2005Templates中的相应位置,然后修改添加上自己要添加的信息。 然后在添加新项的时候选择“我的模板”下面的项即可。

     示意图如下:

WebForm模板

 

 

  

注意:WebSite模板和Web应用程序模板是不一样的。   

2.怎样给代码添加代码段?

     编码过程中,经常会有一些常用的代码结果会反复使用,有没有一种办法把这些代码嵌套到VS IDE中呢?

     解决办法:完全没问题,使用snippet文件能很好的解决这一问题。打开Program FilesMicrosoft Visual Studio 8VC#Snippets2052Visual C#里面有很多VS自带的snippet文件,你只需要复制一下,然后把它修改成自己的代码段即可。

     见图示:

     

     代码如下:

     

Code

 

使用:

如上图:找到自己设置的代码段的别名,输入回车键,然后输入tab键,即可自动生成如下代码:

 

3.怎样使用任务管理器?

     假如我们开发的项目很大,在项目中有些代码没有完成,我们可以做一下标记,便于将来查找

     VS中的任务管理器能够很好地解决这一问题,使用方法:在要标志的地方输入://TODO:内容,然后在视图——任务列表中打开所有的任务列表。

4.怎样使用发布网站功能?

     在我们部署Web应用程序的时候,像.cs等文件因为已经生成了dll,对部署站点是没有什么用处的,这个时候一般都是手动去删除这些没用的文件,有没有更快捷的办法来完成这项工作呢?VS自带的发布功能能够很好地解决这一问题。

     选中项目——右键属性——发布(Publish) 或者选择生成(Build)——发布(Publish)打开如下对话框:

     

5.怎样把备份常用代码,快捷方便下次使用?

     在编码过程中我们会经常编写一些重复的代码,怎样把这些代码备份起来,下次使用的时候能够快捷地调用出来呢?

     工具箱中的常用选项能够达到这个功能,把我们常用的代码拖放到工具箱中的常用选项卡中,下次使用的时候直接双击就行了。如下图:

     

6.怎样在同一个窗口中查看一个文档的不同部分?

直接见图:

     

拖动后下效果见下图:

看到了吗?一个文档被分成了两个!你可以在一个窗口中同时查看这个文档的头部和尾部。

怎样还原过去呢?直接拖动那个小条条,恢复原位就行了。

7.怎样创建区域,方便代码阅读及维护?

     添加

     #region

     //代码区域

     #endregion

8.怎样创建矩形选区?

     有时候我们只想复制一段代码的前几列,后几列不想复制,怎样才能达到这种效果呢?

     很简单,摁住alt键,然后拖动鼠标即可,效果如下:

     

来自:http://www.cnblogs.com/qqflying/archive/2008/11/19/1336094.html

Categories: ASP.net, Web Tags: , ,