1. 你们的项目组使用源代码管理工具了么?
应该用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的选择是VSS。
2. 你们的项目组使用缺陷管理系统了么?
应该用。ClearQuest太复杂,我的推荐是BugZilla。
3. 你们的测试组还在用Word写测试用例么?
不要用Word写测试用例(Test Case)。应该用一个专门的系统,可以是Test Manager,也可以是自己开发一个ASP.NET的小网站。主要目的是Track和Browse。
4. 你们的项目组有没有建立一个门户网站?
要有一个门户网站,用来放Contact Info、Baselined Schedule、News等等。推荐Sharepoint Portal Server 2003来实现,15分钟就搞定。买不起SPS 2003可以用WSS (Windows Sharepoint Service)。
5. 你们的项目组用了你能买到最好的工具么?
应该用尽量好的工具来工作。比如,应该用VS.NET而不是Notepad来写C#。用Notepad写程序多半只是一种炫耀。但也要考虑到经费,所以说是“你能买到最好的”。
6. 你们的程序员工作在安静的环境里么?
需要安静环境。这点极端重要,而且要保证每个人的空间大于一定面积。
7. 你们的员工每个人都有一部电话么?需要每人一部电话。而且电话最好是带留言功能的。当然,上这么一套带留言电话系统开销不小。不过至少每人一部电话要有,千万别搞得经常有人站起来喊:“某某某电话”。《人件》里面就强烈谴责这种做法。
8. 你们每个人都知道出了问题应该找谁么?
应该知道。任何一个Feature至少都应该有一个Owner,当然,Owner可以继续Dispatch给其他人。
9. 你遇到过有人说“我以为…”么?
要消灭“我以为”。Never assume anything。
10. 你们的项目组中所有的人都坐在一起么?
需要。我反对Virtual Team,也反对Dev在美国、Test在中国这种开发方式。能坐在一起就最好坐在一起,好处多得不得了。
11. 你们的进度表是否反映最新开发进展情况?
应该反映。但是,应该用Baseline的方法来管理进度表:维护一份稳定的Schedule,再维护一份最新更改。Baseline的方法也应该用于其它的Spec。Baseline是变更管理里面的一个重要手段。
12. 你们的工作量是先由每个人自己估算的么?
应该让每个人自己估算。要从下而上估算工作量,而不是从上往下分派。除非有其他原因,比如政治任务工期固定等。
13. 你们的开发人员从项目一开始就加班么?
不要这样。不要一开始就搞疲劳战。从项目一开始就加班,只能说明项目进度不合理。当然,一些对日软件外包必须天天加班,那属于剥削的范畴。
14. 你们的项目计划中Buffer Time是加在每个小任务后面的么?
不要。Buffer Time加在每个小任务后面,很容易轻易的就被消耗掉。Buffer Time要整段的加在一个Milestone或者checkpoint前面。
15. 值得再多花一些时间,从95%做到100%好值得,非常值得。
尤其当项目后期人困马乏的时候,要坚持。这会给产品带来质的区别。
16. 登记新缺陷时,是否写清了重现步骤?
要。这属于Dev和Test之间的沟通手段。面对面沟通需要,详细填写Repro Steps也需要。
17. 写新代码前会把已知缺陷解决么?要。每个人的缺陷不能超过10个或15个,否则必须先解决老的bug才能继续写新代码。
18. 你们对缺陷的轻重缓急有事先的约定么?
必须有定义。Severity要分1、2、3,约定好:蓝屏和Data Lost算Sev 1,Function Error算Sev 2,界面上的算Sev 3。但这种约定可以根据产品质量现状适当进行调整。
19. 你们对意见不一的缺陷有三国会议么?必须要有。要有一个明确的决策过程。这类似于CCB (Change Control Board)的概念。
20. 所有的缺陷都是由登记的人最后关闭的么?
Bug应该由Opener关闭。Dev不能私自关闭Bug。
21. 你们的程序员厌恶修改老的代码么?
厌恶是正常的。解决方法是组织Code Review,单独留出时间来。XP也是一个方法。
22. 你们项目组有Team Morale Activity么?
每个月都要搞一次,吃饭、唱歌、Outing、打球、开卡丁车等等,一定要有。不要剩这些钱。
23. 你们项目组有自己的Logo么?
要有自己的Logo。至少应该有自己的Codename。
24. 你们的员工有印有公司Logo的T-Shirt么?
要有。能增强归属感。当然,T-Shirt要做的好看一些,最好用80支的棉来做。别没穿几次就破破烂烂的。
25. 总经理至少每月参加次项目组会议要的。
要让team member觉得高层关注这个项目。
26. 你们是给每个Dev开一个分支么?
反对。Branch的管理以及Merge的工作量太大,而且容易出错。
27. 有人长期不Check-In代码么?
不可以。对大部分项目来说,最多两三天就应该Check-In。
28. 在Check-In代码时都填写注释了么?
要写的,至少一两句话,比如“解决了Bug No.225”。如果往高处拔,这也算做“配置审计”的一部分。
29. 有没有设定每天Check-In的最后期限?
要的,要明确Check-In Deadline。否则会Build Break。
30. 你们能把所有源码一下子编译成安装文件吗?
要的。这是每日编译(Daily Build)的基础。而且必须要能够做成自动的。
31. 你们的项目组做每日编译么?
当然要做。有三样东西是软件项目/产品开发必备的:1. bug management; 2. source control; 3. daily build。
32. 你们公司有没有积累一个项目风险列表?
要。Risk Inventory。否则,下个项目开始的时候,又只能拍脑袋分析Risk了。
33. 设计越简单越好越简单越好。
设计时候多一句话,将来可能就带来无穷无尽的烦恼。应该从一开始就勇敢的砍。这叫scope management。
34. 尽量利用现有的产品、技术、代码千万别什么东西都自己Coding。BizTalk和Sharepoint就是最好的例子,有这两个作为基础,可以把起点提高很多。或者可以尽量多用现成的Control之类的。或者尽量用XML,而不是自己去Parse一个文本文件;尽量用RegExp,而不是自己从头操作字符串,等等等等。这就是“软件复用”的体现。
35. 你们会隔一段时间就停下来夯实代码么?
要。最好一个月左右一次。传言去年年初Windows组在Stevb的命令下停过一个月增强安全。Btw,“夯”这个字念“hang”,第一声。
36. 你们的项目组每个人都写Daily Report么?
要写。五分钟就够了,写10句话左右,告诉自己小组的人今天我干了什么。一则为了沟通,二则鞭策自己(要是游手好闲一天,自己都会不好意思写的)。
37. 你们的项目经理会发出Weekly Report么?
要。也是为了沟通。内容包括目前进度,可能的风险,质量状况,各种工作的进展等。
38. 你们项目组是否至少每周全体开会一次?
要。一定要开会。程序员讨厌开会,但每个礼拜开会时间加起来至少应该有4小时。包括team meeting, spec review meeting, bug triage meeting。千万别大家闷头写code。
39. 你们项目组的会议、讨论都有记录么?
会前发meeting request和agenda,会中有人负责主持和记录,会后有人负责发meeting minutes,这都是effective meeting的要点。而且,每个会议都要形成agreements和action items。
40. 其他部门知道你们项目组在干什么么?
要发一些Newsflash给整个大组织。Show your team’s value。否则,当你坐在电梯里面,其他部门的人问:“你们在干嘛”,你回答“ABC项目”的时候,别人全然不知,那种感觉不太好。
41. 通过Email进行所有正式沟通
Email的好处是免得抵赖。但也要避免矫枉过正,最好的方法是先用电话和当面说,然后Email来确认。
42. 为项目组建立多个Mailing Group
如果在AD+Exchange里面,就建Distribution List。比如,我会建ABC Project Core Team,ABC Project Dev Team,ABC Project All Testers,ABC Project Extended Team等等。这样发起Email来方便,而且能让该收到email的人都收到、不该收到不被骚扰。
43. 每个人都知道哪里可以找到全部的文档么?
应该每个人都知道。这叫做知识管理(Knowledge Management)。最方便的就是把文档放在一个集中的File Share,更好的方法是用Sharepoint。
44. 你做决定、做变化时,告诉大家原因了么?
要告诉大家原因。Empower team member的手段之一是提供足够的information,这是MSF一开篇的几个原则之一。的确如此,tell me why是人之常情,tell me why了才能有understanding。中国人做事喜欢搞限制,限制信息,似乎能够看到某一份文件的人就是有身份的人。大错特错。权威、权力,不在于是不是能access information/data,而在于是不是掌握资源。
45. Stay agile and expect change 要这样。
需求一定会变的,已经写好的代码一定会被要求修改的。做好心理准备,对change不要抗拒,而是expect change。
46. 你们有没有专职的软件测试人员?
要有专职测试。如果人手不够,可以peer test,交换了测试。千万别自己测试自己的。
47. 你们的测试有一份总的计划来规定做什么和怎么做么?这就是Test Plan。要不要做性能测试?要不要做Usability测试?什么时候开始测试性能?测试通过的标准是什么?用什么手段,自动的还是手动的?这些问题需要用Test Plan来回答。
48. 你是先写Test Case然后再测试的么?
应该如此。应该先设计再编程、先test case再测试。当然,事情是灵活的。我有时候在做第一遍测试的同时补上test case。至于先test case再开发,我不喜欢,因为不习惯,太麻烦,至于别人推荐,那试试看也无妨。
49. 你是否会为各种输入组合创建测试用例?
不要,不要搞边界条件组合。当心组合爆炸。有很多test case工具能够自动生成各种边界条件的组合——但要想清楚,你是否有时间去运行那么多test case。
50. 你们的程序员能看到测试用例么?
要。让Dev看到Test Case吧。我们都是为了同一个目的走到一起来的:提高质量。
51. 你们是否随便抓一些人来做易用性测试?
要这么做。自己看自己写的程序界面,怎么看都是顺眼的。这叫做审美疲劳——臭的看久了也就不臭了,不方便的永久了也就习惯了。
52. 你对自动测试的期望正确么?
别期望太高。依我看,除了性能测试以外,还是暂时先忘掉“自动测试”吧,忘掉WinRunner和LoadRunner吧。对于国内的软件测试的现状来说,只能“矫枉必须过正”了。
53. 你们的性能测试是等所有功能都开发完才做的么?
不能这样。性能测试不能被归到所谓的“系统测试”阶段。早测早改正,早死早升天。
54. 你注意到测试中的杀虫剂效应了么?
虫子有抗药性,Bug也有。发现的新Bug越来越少是正常的。这时候,最好大家交换一下测试的area,或者用用看其他工具和手法,就又会发现一些新bug了。
55. 你们项目组中有人能说出产品的当前整体质量情况么?
要有。当老板问起这个产品目前质量如何,Test Lead/Manager应该负责回答。
56. 你们有单元测试么?
单元测试要有的。不过没有单元测试也不是不可以,我做过没有单元测试的项目,也做成功了——可能是侥幸,可能是大家都是熟手的关系。还是那句话,软件工程是非常实践、非常工程、非常灵活的一套方法,某些方法在某些情况下会比另一些方法好,反之亦然。
57. 你们的程序员是写完代码就扔过墙的么?
大忌。写好一块程序以后,即便不做单元测试,也应该自己先跑一跑。虽然有了专门的测试人员,做开发的人也不可以一点测试都不做。微软还有Test Release Document的说法,程序太烂的话,测试有权踢回去。
58. 你们的程序中所有的函数都有输入检查么?
不要。虽然说做输入检查是write secure code的要点,但不要做太多的输入检查,有些内部函数之间的参数传递就不必检查输入了,省点功夫。同样的道理,未必要给所有的函数都写注释。写一部分主要的就够了。
59. 产品有统一的错误处理机制和报错界面么?
要有。最好能有统一的error message,然后每个error message都带一个error number。这样,用户可以自己根据error number到user manual里面去看看错误的具体描述和可能原因,就像SQL Server的错误那样。同样,ASP.NET也要有统一的Exception处理。可以参考有关的Application Block。
60. 你们有统一的代码书写规范么?
要有。Code Convention很多,搞一份来发给大家就可以了。当然,要是有FxCop这种工具来检查代码就更好了。
61. 你们的每个人都了解项目的商业意义么?
要。这是Vision的意思。别把项目只当成工作。有时候要想着自己是在为中国某某行业的信息化作先驱者,或者时不时的告诉team member,这个项目能够为某某某国家部门每年节省多少多少百万的纳税人的钱,这样就有动力了。平凡的事情也是可以有个崇高的目标的。
62. 产品各部分的界面和操作习惯一致么?
要这样。要让用户觉得整个程序好像是一个人写出来的那样。
63. 有可以作为宣传亮点的Cool Feature么?
要。这是增强团队凝聚力、信心的。而且,“一俊遮百丑”,有亮点就可以掩盖一些问题。这样,对于客户来说,会感觉产品从质量角度来说还是acceptable的。或者说,cool feature或者说亮点可以作为质量问题的一个事后弥补措施。
64. 尽可能缩短产品的启动时间要这样。
软件启动时间(Start-Up time)是客户对性能好坏的第一印象。
65. 不要过于注重内在品质而忽视了第一眼的外在印象程序员容易犯这个错误:太看重性能、稳定性、存储效率,但忽视了外在感受。而高层经理、客户正相反。这两方面要兼顾,协调这些是PM的工作。
66. 你们根据详细产品功能说明书做开发么?
要这样。要有设计才能开发,这是必须的。设计文档,应该说清楚这个产品会怎么运行,应该采取一些讲故事的方法。设计的时候千万别钻细节,别钻到数据库、代码等具体实现里面去,那些是后面的事情,一步步来不能着急。
67. 开始开发和测试之前每个人都仔细审阅功能设计么?
要做。Function Spec review是用来统一思想的。而且,review过以后形成了一致意见,将来再也没有人可以说“你看,当初我就是反对这么设计的,现在吃苦头了吧”
68. 所有人都始终想着The Whole Image么?要这样。项目里面每个人虽然都只是在制造一片叶子,但每个人都应该知道自己在制造的那片叶子所在的树是怎么样子的。我反对软件蓝领,反对过分的把软件制造看成流水线、车间。参见第61条。
69. Dev工作的划分是单纯纵向或横向的么?
不能单纯的根据功能模块分,或者单纯根据表现层、中间层、数据库层分。我推荐这么做:首先根据功能模块分,然后每个“层”都有一个Owner来Review所有人的设计和代码,保证consistency。
70. 你们的程序员写程序设计说明文档么?
要。不过我听说微软的程序员1999年以前也不写。所以说,写不写也不是绝对的,偷懒有时候也是可以的。参见第56条。
71. 你在招人面试时让他写一段程序么?
要的。我最喜欢让人做字符串和链表一类的题目。这种题目有很多循环、判断、指针、递归等,既不偏向过于考算法,也不偏向过于考特定的API。
72. 你们有没有技术交流讲座?
要的。每一两个礼拜搞一次内部的Tech Talk或者Chalk Talk吧。让组员之间分享技术心得,这笔花钱送到外面去培训划算。
73. 你们的程序员都能专注于一件事情么?
要让程序员专注一件事。例如说,一个部门有两个项目和10个人,一种方法是让10个人同时参加两个项目,每个项目上每个人都花50%时间;另一种方法是5个人去项目A,5个人去项目B,每个人都100%在某一个项目上。我一定选后面一种。这个道理很多人都懂,但很多领导实践起来就把属下当成可以任意拆分的资源了。
74. 你们的程序员会夸大完成某项工作所需要的时间么?
会的,这是常见的,尤其会在项目后期夸大做某个change所需要的时间,以次来抵制change。解决的方法是坐下来慢慢磨,磨掉程序员的逆反心理,一起分析,并把估算时间的颗粒度变小。
75. 尽量不要用Virtual Heads 最好不要用Virtual Heads。
Virtual heads意味着resource is not secure,shared resource会降低resource的工作效率,容易增加出错的机会,会让一心二用的人没有太多时间去review spec、review design。一个dedicated的人,要强过两个只能投入50%时间和精力的人。我是吃过亏的:7个part time的tester,发现的Bug和干的活,加起来还不如两个full-time的。参见第73条。73条是针对程序员的,75条是针对Resource Manager的。
2005年6月30日
2005年6月29日
使用Session
前几日一直在设计界面,原先采用过一个全局变量来控制一些panel的显示。
今天正式采用session来在页面之间传递变量值。
不用不知道,一用忘不掉。今天的进展很是顺利。我在session的基础上不但实现了不同权限用户的界面显示问题,还利用这个东西来控制一些控件的显示。
简单小结一下:可以用Session中装入一些变量,然后根据变量的不同值来确定显示。
还解决了一个问题,就是页面的转向问题,我采用的方法是Response.Redirect("index.aspx")来实现。
Datagrid中的模板列里面的Edit点击事件的相应问题也在我查了半天后得到了解决,现在发现微软的在线MSDN是个好东西,里面什么都有,而且不用安装在本地。这种在线服务非常好。
今天正式采用session来在页面之间传递变量值。
不用不知道,一用忘不掉。今天的进展很是顺利。我在session的基础上不但实现了不同权限用户的界面显示问题,还利用这个东西来控制一些控件的显示。
简单小结一下:可以用Session中装入一些变量,然后根据变量的不同值来确定显示。
还解决了一个问题,就是页面的转向问题,我采用的方法是Response.Redirect("index.aspx")来实现。
Datagrid中的模板列里面的Edit点击事件的相应问题也在我查了半天后得到了解决,现在发现微软的在线MSDN是个好东西,里面什么都有,而且不用安装在本地。这种在线服务非常好。
2005年6月28日
锻炼身体
前天晚上电视上看到采访《天龙八部》中饰演乔峰的胡军。胡军提到了小时候他父亲对他说的话:身体一定要锻炼好,那是工作和学习的本钱。胡军说他小时候领会的不好,现在感觉到身体是一切的本钱。是呀,人的身体只有一个,就像生命一样重要。我们没有理由不爱惜和锻炼好。
想想自己来京一个多月了,现在感觉自己长胖了些。这里的朋友们大都这样,因为除了睡觉和吃饭其他时间几乎都是坐着。整天这样肯定会长胖的。现在我们的锻炼非常缺乏。我想应该坚持一下以前在学校里面锻炼身体的频度。时不时的需要早起锻炼一下。现在早上一般都睡到八点才起床,一般是不会有时间的。我想还是晚上比较好些。呵呵,那就赶紧关上电脑回去跑跑步吧,反正今天的工作也已经差不多了。
88^_^
想想自己来京一个多月了,现在感觉自己长胖了些。这里的朋友们大都这样,因为除了睡觉和吃饭其他时间几乎都是坐着。整天这样肯定会长胖的。现在我们的锻炼非常缺乏。我想应该坚持一下以前在学校里面锻炼身体的频度。时不时的需要早起锻炼一下。现在早上一般都睡到八点才起床,一般是不会有时间的。我想还是晚上比较好些。呵呵,那就赶紧关上电脑回去跑跑步吧,反正今天的工作也已经差不多了。
88^_^
2005年6月27日
DataGrid
周老师还有三天就要回来检查我们的工作了,我和世奇今天都工作得非常投入。结合前几日得工作,我今天主要需要完成文件管理的数据库操作部分。按照原定的DataGrid方案,我现在网上找了大量的文章来学习如何使用DataGrid。现在真是一点一点学习呀,结合我需要实现的三个功能,我在网上找到对应的例子后就开始设计数据库了。
等到下午开始编程实现的时候才发现还有一个很难的东西——数据据数据在网页中的分页显示。这个东西说难吧,细想真是非常麻烦;不难吧,那是别人实现过,但是代码没有注释。最后没有办法了,俺就拿着代码在VS.NET里面跟踪执行,最后发现DataGrid分页功能是自带的,只需要通过页面索引连接的DataGrid1.CurrentPageIndex = e.NewPageIndex;之后再连接SQL数据库即可实现分页的自动显示。
工程这东西就是经验呀,知之为之之,不知为不知,是之也!全靠一点一点的经验积累,一点也不能含糊的。
等到下午开始编程实现的时候才发现还有一个很难的东西——数据据数据在网页中的分页显示。这个东西说难吧,细想真是非常麻烦;不难吧,那是别人实现过,但是代码没有注释。最后没有办法了,俺就拿着代码在VS.NET里面跟踪执行,最后发现DataGrid分页功能是自带的,只需要通过页面索引连接的DataGrid1.CurrentPageIndex = e.NewPageIndex;之后再连接SQL数据库即可实现分页的自动显示。
工程这东西就是经验呀,知之为之之,不知为不知,是之也!全靠一点一点的经验积累,一点也不能含糊的。
2005年6月26日
八大处公园
今天是世奇的生日,又逢周日,我们二人约上中心那边的Carl,光光和晓光一起到北京海淀区的八大处公园游玩。这个八大处公园真是大呀,整个儿有400公顷。

所谓八大处指:
到山顶宝珠洞后我们开始往回返,下山可以乘缆车、坐滑道、骑马,最终我们选择了骑马。我们五人每人一匹,我骑的是匹白马。由于全是下上的马道,马的主人是牵着我们的马在崎岖不平的马道上前行。一行途中看到一种名为“火炬花”的植物,说是两年开一次花,花朵酷似火炬状,开始我还以为是什么野果子那么大呢。
下了马道我们开始在水泥路上往下走,走到山脚时看到了一条小溪,小溪从另外一处山上流下。令人叫绝的是在小溪两侧是中国历代的印章,从最底部的毕曻发明活字印刷开始一直道山顶介绍到了清朝。有的印章甚至凿刻在水底的石头上。这里非常优雅,小溪在树林中迂回曲折给人一种室外桃源的感觉,沁人心脾!
原来这里是西山十二景之“水谷流泉”又叫“中华精印谷”, 文化内涵丰富,千余枚历代印章以石刻的形式集中于长约400米的自然沟谷之中。真是不枉此行呀。

所谓八大处指:
- 一处长安寺:在八大处公路旁,是一座两进殿院的明代寺庙,寺内古铜钟系珍贵文物。
- 二处灵光寺:建于八世纪的唐代,1071年辽代在此增建一座八角十层密檐宝塔,名招仙塔,后被八国联军所毁。但在清理塔基时,发现藏有"释迦佛灵牙舍利"。为珍藏这一佛牙之宝,中国佛教协会于1954年,便在此新建起一座八角十三层,高51米的密檐砖塔,高耸壮丽,成为八大处的标致之一。
- 三处三山庵:仅一殿院,殿前汉白玉雕"水云石"极为精美可鉴。
- 四处大悲寺:在平坡山腰,元代建筑,殿内有用檀香末与香砂混同塑成的十八罗汉,十分罕见。
- 五处龙泉庵:清代寺观,其以流泉静趣而著称。
- 六处香界寺:建于唐代,殿院重重,并设有行宫和花园,为历代帝王前来游山,降香时的歇息处。寺内有清康熙榜书"敬佛"二字御碑,是八大处最大的一座寺院。
- 七处宝珠洞:在翠微山巅,寺内有一岩洞广深各5米,洞口岩石像似珠宝而故名。游人屹立山顶举目四望,壮丽江山一览无余。
- 八处证果寺:在卢师山上,寺内有一岩洞,叫秘魔崖。崖洞内有石桌、石床、石门窗,洞外有招止亭,游客凭栏远望青山幽谷,大有欲醉欲仙之感。
到山顶宝珠洞后我们开始往回返,下山可以乘缆车、坐滑道、骑马,最终我们选择了骑马。我们五人每人一匹,我骑的是匹白马。由于全是下上的马道,马的主人是牵着我们的马在崎岖不平的马道上前行。一行途中看到一种名为“火炬花”的植物,说是两年开一次花,花朵酷似火炬状,开始我还以为是什么野果子那么大呢。
下了马道我们开始在水泥路上往下走,走到山脚时看到了一条小溪,小溪从另外一处山上流下。令人叫绝的是在小溪两侧是中国历代的印章,从最底部的毕曻发明活字印刷开始一直道山顶介绍到了清朝。有的印章甚至凿刻在水底的石头上。这里非常优雅,小溪在树林中迂回曲折给人一种室外桃源的感觉,沁人心脾!
原来这里是西山十二景之“水谷流泉”又叫“中华精印谷”, 文化内涵丰富,千余枚历代印章以石刻的形式集中于长约400米的自然沟谷之中。真是不枉此行呀。
2005年6月25日
周六的班
又是一个周六,考虑到明日要到北京八大处公园游玩以及即将被检查的任务,我和世奇今日都在实验室加班。
我的任务中还是那个令人烦恼的RichTextBox的问题。这个东西网上有现成的控件,但是不能直接使用,因为其中有版权的问题,还有些用法实在太复杂。弄了半天还是一点进展都没有。这可把俺整急了。
呵呵,后来俺来了一招“先绕过,再迂回”的策略。等俺有时间了再来解决这个问题。现在还得抓紧时间完成后面的工作要紧。想到这里不觉间轻松了很多。
现在需要完成的工作之中还有就是需要进行文件列表的显示和可操作。这个工作基本上可以采用DataGrid来绑定到数据库中实现。基本方向有了等到周一再来解决吧。
周末这里人非常少,中午和晚饭都只有我们二人在饭店吃饭,晚饭有幸吃到了北京的羊蝎子
我的任务中还是那个令人烦恼的RichTextBox的问题。这个东西网上有现成的控件,但是不能直接使用,因为其中有版权的问题,还有些用法实在太复杂。弄了半天还是一点进展都没有。这可把俺整急了。
呵呵,后来俺来了一招“先绕过,再迂回”的策略。等俺有时间了再来解决这个问题。现在还得抓紧时间完成后面的工作要紧。想到这里不觉间轻松了很多。
现在需要完成的工作之中还有就是需要进行文件列表的显示和可操作。这个工作基本上可以采用DataGrid来绑定到数据库中实现。基本方向有了等到周一再来解决吧。
周末这里人非常少,中午和晚饭都只有我们二人在饭店吃饭,晚饭有幸吃到了北京的羊蝎子
2005年6月24日
ASP.NET中的RichTextBox
现在需要在网页的一个输入框中实现如下功能:
分析了一下,在Windows Form中实现这个东西难度不是很大.但是现在的要求是要在ASP.NET的控件中实现这个东西难度很大.向蒋龙请教了一下后知道了这个东西实现的基本原理就是要实时监控RichTextBox中的输入,然后采用一个输入框来实现.由于C#中的类库非常丰富,我在手册里找了半天看到一个RichTextBox可以实现这个任务.但是后来发现这个东西是Windows Form的控件,在ASP.NET中不能显示出来.
想到可能别人已经实现过这个东西,开始在网上到处查找相关的内容.很幸运的找到了一些能够直接用的控件,,这里有一个控件网想必大家都能用上:慧都控件网.
但是最后都由于版权的问题或者IE安全级别调低的问题最终都一一放弃.想到原理咱都知道了那就自己实现吧,正好锻炼一下动手能力.开始的第一件事情就是要在网页中插入一个RichTextField控件,但是走怎么也用不了.在网上找了半天还是没有解决方案.
现在的感觉就是我的MSN昵称中的"兴奋 抑或 郁闷"的后者.呵呵,好像做工程特别是以前没有接触过的工程就会出现这种现象吧:)
问题摆在面前了,明日一定要解决掉这个问题.
刚才在网上找到如下一段信息:
呵呵,看来只能用第三方控件了^_^
- 1.支持自动的关键字颜色变化
- 2.支持智能提示,就像VS中编程的时候那些自动提示的一样
分析了一下,在Windows Form中实现这个东西难度不是很大.但是现在的要求是要在ASP.NET的控件中实现这个东西难度很大.向蒋龙请教了一下后知道了这个东西实现的基本原理就是要实时监控RichTextBox中的输入,然后采用一个输入框来实现.由于C#中的类库非常丰富,我在手册里找了半天看到一个RichTextBox可以实现这个任务.但是后来发现这个东西是Windows Form的控件,在ASP.NET中不能显示出来.
想到可能别人已经实现过这个东西,开始在网上到处查找相关的内容.很幸运的找到了一些能够直接用的控件,,这里有一个控件网想必大家都能用上:慧都控件网.
但是最后都由于版权的问题或者IE安全级别调低的问题最终都一一放弃.想到原理咱都知道了那就自己实现吧,正好锻炼一下动手能力.开始的第一件事情就是要在网页中插入一个RichTextField控件,但是走怎么也用不了.在网上找了半天还是没有解决方案.
现在的感觉就是我的MSN昵称中的"兴奋 抑或 郁闷"的后者.呵呵,好像做工程特别是以前没有接触过的工程就会出现这种现象吧:)
问题摆在面前了,明日一定要解决掉这个问题.
刚才在网上找到如下一段信息:
| Ask | hello, is richtext control available in asp.net.where is the control. how tio use it |
| Answer | RichTextBox is in the .NET Framework, but only for Windows Forms, not for Web Forms. This is because ASP.NET renders HTML, and HTML doesn't contain a RichText element. So your answer will be to buy a 3rd party control that will likely render as an ActiveX object |
呵呵,看来只能用第三方控件了^_^
订阅:
博文 (Atom)