近期修改 Web Part 的一点个人总结

来源:互联网 发布:sha256算法破解 编辑:程序博客网 时间:2024/05/14 06:01
最近改进了几个 Web Parts, 而自己真正从代码层接触 Web Part 也才不过三个月,且经过的 Web Part 均是其他同事完成了,自己只能改进而矣,从小的一点点的改进,到大的基本重写,也只不过经历了几个, 但作为一个 Web Part 开发的“菜鸟”, 不能不说历经了不少的曲折和麻烦,虽然效率低了不少,但总算基本都按要求完成了任务。以后可以还有不少的改进,或者新建,现在就将近段的一些经验和教训总结一下,也算是对工作的回顾和经验的记录呀。

  1. 首先要有一个能测试的环境,否则基本无法完成复杂一点的任务,有关此点,可以参看之前写的如何Debug WebPart 的相关文章,我在这方面也算是走了不少弯路,也浪费了不少的等待时间;
  2. 一定要理解SPS 中 List / View 的区别,List 类似DB 中的 Table ,而View 正如 DB 中的 View ,只是List 的一个自定义的子集,一个LIst 可以有多个View;
  3. 一定要理解List 中的 Field的Display Name 和 Internal Name 的区别,并重视二者的区别,对用户使用Display Name,在程序中最好使用Internal Name, 特别是 SPQuery 中只能使用Internal Name,而使用Display Name 则会出错或取不到想要的记录,我在这上在可算是浪费了不少的时间和进行了不少的Debug;
  4.  一定要对 SP Query 有一定的了解,因为想取得List/View 中的记录,大多需要使用SPQuery,故其语法一定要懂,可参看WSS SDK,或之前的的Blog 中的有关 SPQuery 的文章;
  5. 在WebPart 中的控件,特别要注意其ID 的命名,这上面我也碰到了不少的问题,如我曾用 Display Name 作为ID, 但却发现对Display Name 中有空格的情况,会导致控件有些功能无法正常使用,如 DateTimeControl,就会出现无法点击显示日历,最终浪费了我"宝贵"的60可用分,还是自己通过 Debug 发现了这个问题,自己给解决了,而且ID 的命名时,有些可以使用加一个 GUID 来使其唯一,但在我的使用中,发现使用 GUID时,却导致相关的事件不起作用,此问题还需进一步的研究;
  6. 要对 JavaScript 有一定的研究,如我遇到的记录分页的问题,刚开始,我根本没有想到用JavaScript 来解决,而且想用 Postback, 通过 QueryString 传参数的方式在后台用 DataSet 解决,最终还是由另一同事使用 JavaScript + DIV 的方式解决,如此即可不用 Postback ,效率上大大提高;
  7. 要对其中的 CreateChildControl 和 Render 事情了解,一般避免在 Render 中对显示的控件进行赋值的动作,否则会不成功,而应在 CreateChildControl 中由相应产生的事件进行处理,而且使用 QueryString 传参数时,也要考虑何时取值的问题,同时对自己定义的变量要知道何时会重新初始化,不可再使用之前存储在其中的值,而要重新取值。

暂时就想到这些,基本上包括了我碰到我多个难点,难题,以后可能会遇到更多,那就让问题来的更猛一些吧,我也可以解决和学到更多的知识和技能。

之后想到的,我会尽量仍写的这里,以方便查找和回顾。