Shuguang's profilekaneboy's SharePoint blo...PhotosBlogLists Tools Help

Blog


    3/26/2008

    Video:使用VSeWSS创建定制SharePoint页面

    最近有人向我抱怨,说他在用SharePoint Designer摆弄SharePoint页面时,被同事无情的嘲笑为非真正的Developer。为了挽救他受伤的心灵,我决定录一段用Visual Studio做SharePoint页面的video,来教会他如何在同事面前抬起头了。当然,如果确实用SharePoint Designer更方便,我还是建议他每天早一个钟头去办公室,先用SharePoint Designer弄好页面,然后在同事进到办公室之前,将用SharePoint Designer弄好的页面copy到Visual Studio中...

    闲话少说。先说一下Video中的那个工具:Visual Studio Extensions for WSS 1.1



    再次道歉(奇怪,我为什么要说再呢?):录屏时错误的选择了WebEx,造成录像效果不是很好,但基本不影响欣赏。同时,还得麻烦您到这里去下载WebEx播放器

    3/23/2008

    Be an Office Developer Hero !

    Some funny videos from Office Developer Conference 2008. Enjoy! :)

     
    Video: ODC2008 Swag Guy

     
    Video: ODC2008 Architect Guy

     
    Video: ODC2008 User Experience Person

     
    Video: ODC2008 Developer Guy

     
    Video: ODC2008 VBA Macro Guy

    3/16/2008

    如何定制列表项编辑页面

    经常有人问我“如何禁止用户修改某某字段?”之类的问题。通常这一类的问题会牵涉到对列表项编辑页面的修改。

    其实简单来说,如果你熟悉SharePoint开发,解决上面所说的这个问题就非常简单了。因为SPField有一个ShowInEditForm的属性,你只需要这样:

    SPField titleField = item.Fields["Title"];
    titleField.ShowInEditForm = false;


    但如果你不想用这样的方法,或者想了解更多对列表项编辑页面的定制,那就继续看下去。

    对列表项编辑页面最常见,也最方便的定制方法,就是使用SharePoint Designer打开这个页面直接进行修改。通常,通过往这个页面上添加相应的JavaScript脚本,就可以完成我们需要的效果。
    image

    比如下面的这个任务列表项的编辑页面,我们希望,它能够隐藏“标题”字段,同时,自动将“截止日期”所对应的文本框中的值设置为2008/1/1(是的,我知道要做到这个只需要更改字段默认值,但这不是重点...)。
    image 

    <script type="text/javascript" language="javascript">

    // 搜索对应到每个字段的文本输入框
    function searchFieldEditorElement(tagName, identifier, title) {
      var len = identifier.length;
      var tags = document.getElementsByTagName(tagName);
      for (var i=0; i < tags.length; i++) {
        var tempString = tags[i].id;
        if (tags[i].title == title && (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) {
          return tags[i];
        }
      }
      return null;
    }

    // 搜索对应到每个字段的“<TR>”标签
    function searchParentTR(element)
    {
        var parentElement = element.parentElement;
        if (parentElement == null)
        {
            return element;
        }
        if (parentElement.tagName.toLowerCase() == "tr")
        {
            return parentElement;
        }
        return searchParentTR(parentElement);
    }

    function setFieldControls()
    {
        // 将“标题”字段所对应的行隐藏起来
        var txtTitle = searchFieldEditorElement("input", "TextField", "标题");
        if (txtTitle != null)
        {
            var parentTr = searchParentTR(txtTitle);
            parentTr.style.display = "none";
        }

        // 将“截止日期”字段所对应的文本框的值设置成“2008/1/1”
        var txtEndDate = searchFieldEditorElement("input", "DateTimeFieldDate", "截止日期");
        if (txtEndDate != null)
        {
            txtEndDate .value = "2008/1/1";
        }
    }

    // 指定在页面载入后运行指定的JS函数
    _spBodyOnLoadFunctionNames.push("setFieldControls");

    </script>

    image

    通过灵活使用JavaScript,基本上我们可以实现我们所需要的大部分效果。

    3/13/2008

    SharePoint Conference 2008 - Day 1

    3月3号,SharePoint Conference 2008第一天。

    SharePoint Conference的会场和公司内部的TechReady会议一样,也在西雅图市区的Washington Convention & Trade Center。一大早兴匆匆的就跑过去了,扶手电梯上方挂着SharePoint Conference 2008的大牌子,下面是三个最能描述SharePoint的关键字:Connect、Collabrate和Share。:)

    image

    办完了注册手续,就进到一个前方有两个大投影显示屏的房间,通过投影看keynote直播。为啥不能直接到keynote会场去现场看呢?原因就是今年的SharePont Conference的票很早就卖光了,等到我注册参会的时候,只能订到Overflow类型的票了。Overflow也就是说不能进到大会的keynote现场,只能在旁边的房间看直播...不过对于所有的课程session,当然还是和普通票一样啦。俺的参会牌的后面有一个大大的OVERFLOW标签,直接被会场人员就发配到旁边的直播间了:

    image

    keynote第一个上台的是SharePoint的产品经理,Tom Rizzo。我能参加这个会还得多亏他的帮助,因为我注册的时候,由于票已卖光,只能放到waiting list里面,后来还是我的老板给他发了一封邮件,让他帮忙才终于弄到了一张Overflow票...

    image

    Tom Rizzo把大家鼓动了一把之后,就请出了号称“微软第一SharePoint粉丝”的Bill Gates同志。

    image

    Bill Gates同志虽然演讲风格不敢恭维,但号召力还是相当强的。上台后又给大家看了一遍网上已经流传很广的“Bill Gate's Last Day at Microosft”的搞笑Video,不过这次放的似乎和之前放的有稍许不同,因为我又看到了几个新面孔,包括沃伦巴菲特(对,就是那个股神巴菲特)。

    在Bill Gates的keynote中,他正式宣布了SharePoint Online,这是一个面向企业和个人的在线托管SharePoint服务。你可以在这里看到更详细的有关SharePoint Online的信息,还可以用你的Live ID,免费试用一下SharePoint Online。

    另外,在Tom Rizzo的keynote中,还发布了一个新的SharePoint资源站点:SharePoint Gear Up,里面有不少协助客户和技术人员进行SharePoint部署的资料。

    技术Session在下午正式开始。第一场我去听的《AMD: Deploying MOSS 2007 in a Complex, Global Environment》,是微软的几个GG讲述的AMD在企业Intranet、Extranet与Internet环境中实施SharePoint 2007的经验。课程内容没有什么很特别的,不过在讲述其经验的时候,讲到了他们在实施过程中,对SharePoint Customization进行了严格控制,每一个Customization都需要经过技术人员以及Business Man的审批...

    第二节课程本来计划去听《Code Based List Form Customization in WSS 3.0》,光看名称就已经很吸引人了,而且其课程Level被标注成了400,更加让我觉得非听不可。可到了这个课程的教室门口,才发现,和我有同样想法的人太多了,而课程又被安排在一个小教室内,我到的时候,早已经满员,不让再进人了...

    无奈之下只要跑去听《A Roll-Up of Fun & Lessons Learned Using the Content Query Web Part (CQWP)》,不过还算有所收获,算是了解了一把Content Query Web Part的强大功能,以及知道了微软内网MSW站点首页上那些东东原来都是用CQWP做的。

    image

    今天听的最后一节Session是《Collaborating with Customers on the Extranet with SharePoint 2007: Solutions and Best Practices》,这个Session是由一个微软的合作伙伴讲的(SharePoint Conference中不少课程是微软合作伙伴讲的,其特点是,通常会给自己公司,以及自己公司的某个产品做不少广告)。其实这个Session真可以说是一个标准的“广告Session”,因为大部分时间,都是在Demo这家公司在SharePoint上做的一个Extranet Collaboration Manager的东东。不过这个ExCM的东东功能确实做得不错,部署之后,可以通过配置让SharePoint Farm直接支持Forms Auth、User Self-Registration、Site Self-Provision Request、Site Request Approval Workflow等等。

    整个下午都被时差效应所折磨,在会场喝了2罐可乐也无济于事,撑到课程都结束,就闪回酒店睡觉了...