西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴(lài)的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)編程開(kāi)發(fā)C#.NET → InfoPath進(jìn)階之二:給InfoPath添加VSTA托管代碼并從SharePoint列表查詢(xún)數(shù)據(jù)

InfoPath進(jìn)階之二:給InfoPath添加VSTA托管代碼并從SharePoint列表查詢(xún)數(shù)據(jù)

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:dosboy時(shí)間:2010/1/29 23:11:52字體大小:A-A+

作者:dosboy點(diǎn)擊:1674次評(píng)論:0次標(biāo)簽: InfoPath

  • 類(lèi)型:遠(yuǎn)程監(jiān)控大。4.6M語(yǔ)言:中文 評(píng)分:5.7
  • 標(biāo)簽:
立即下載

摘要:本章節(jié)里,我們要學(xué)習(xí)如何給InfoPath添加代碼,然后如何把含有代碼的表單模板發(fā)布到具有Forms Service的網(wǎng)站上去。本代碼比較簡(jiǎn)單:根據(jù)上一章的示例,模板里有一個(gè)字段叫“申請(qǐng)人”,這段代碼就是根據(jù)當(dāng)前登錄的人名,通過(guò)代碼查詢(xún)到他的部門(mén),然后自動(dòng)地填到“申請(qǐng)部門(mén)”這個(gè)下拉框中去。這樣當(dāng)使用者第一次新建這個(gè)表單時(shí),申請(qǐng)人和部門(mén)就會(huì)自動(dòng)填好,這樣就會(huì)顯得模板比較智能。

你將學(xué)會(huì):

  1. 如何給InfoPath模板添加代碼,并進(jìn)行發(fā)布。
  2. 如何從MOSS的用戶(hù)配置文件中來(lái)讀取用戶(hù)的中文名稱(chēng)
  3. 如何使用OM和Query語(yǔ)句,對(duì)SharePoint列表進(jìn)行查詢(xún)
  4. 如何在程序中設(shè)置表單中某個(gè)節(jié)點(diǎn)(域)的值
  5. 如何應(yīng)用Loading事件

 

一、新建一個(gè)表單庫(kù),用來(lái)存放表單

如下圖:

image

 

二、編輯表單模板,并加入程序

1 以設(shè)計(jì)模式打開(kāi)模板,在“工具”-“表單選項(xiàng)”中設(shè)置編程語(yǔ)言為c#,如下圖:

image

 

2.設(shè)置表單模板的安全級(jí)別為“完全信任”和表單模板簽名,如下圖:

image

3. 在通過(guò)菜單中的Loading事件,打開(kāi)編寫(xiě)程序的界面:

image

 

4.給程序添加3個(gè)必要的“引用”,如圖下圖,打開(kāi)“添加引用”對(duì)話框,

image

1)給程序集添加WSS的引用,主要使用OM對(duì)象模型,如下圖:

image

2)給程序集添加Office Server的引用,主要使用配置文件類(lèi),如下圖:

image

3) 參照之前的例子,再給程序加上System.Web的引用,主要用來(lái)使用ServerContext對(duì)象。

 

5 給程序加上代碼

1) 給程序加上引用行,如下示例:

//以下需要手動(dòng)加上去的
using System.Web;
using Microsoft.Office.Server;
using Microsoft.Office.Server.Administration;
using Microsoft.Office.Server.UserProfiles;
using Microsoft.SharePoint;

2) 在Loading事件中加入如下的代碼:

            if (this.New) //如果是新的表單,就設(shè)置初始值
            {
                //取得當(dāng)前用戶(hù)在配置文件中FullName的值
                using (SPSite site = new SPSite("http://oss")) //請(qǐng)把這個(gè)值換成你的SharePoint網(wǎng)站的URL
                {
                    //以下根據(jù)當(dāng)前用戶(hù)登錄名來(lái)取得用戶(hù)的配置文件
                    ServerContext context = ServerContext.GetContext(site);
                    UserProfileManager profileManager = new UserProfileManager(context);             
                    UserProfile u = profileManager.GetUserProfile(this.Application.User.LoginName);
                    string fullName = u[PropertyConstants.PreferredName].Value.ToString();

                    XPathNavigator mainNavigator = this.MainDataSource.CreateNavigator();   //取得主數(shù)據(jù)源的檢索游標(biāo)

                    //設(shè)置申請(qǐng)人的節(jié)點(diǎn)值為用戶(hù)名,即配置文件中PreferredName(名稱(chēng))的屬性                   
                    mainNavigator.SelectSingleNode("/my:myFields/my:申請(qǐng)人", this.NamespaceManager).SetValue(fullName);  
                   
                    //根據(jù)姓名從SharePoint的部門(mén)列表來(lái)查詢(xún)部門(mén)
                    using (SPWeb web = site.AllWebs["/demo"]) //請(qǐng)把這個(gè)換成你的SharePoint網(wǎng)站的URL
                    {
                        SPQuery query = new SPQuery();
                        //因?yàn)樾彰侄危菑臉?biāo)題更改而來(lái)的,所以其內(nèi)部名稱(chēng)為T(mén)itle
                        query.Query = "<Where><Eq><FieldRef Name='Title'/><Value Type='Text'>" + fullName + "</Value></Eq></Where>"; 
                        SPList list = web.Lists["部門(mén)人員"];
                        SPListItemCollection items = list.GetItems(query);
                        if (items.Count > 0) //如果查找到了就設(shè)置部門(mén)的值
                            mainNavigator.SelectSingleNode("/my:myFields/my:申請(qǐng)部門(mén)", this.NamespaceManager).SetValue(items[0]["部門(mén)"].ToString ());  
 
                    }

                } 
            }
        }
 
 

6 調(diào)試看結(jié)果

請(qǐng)按image 可以看看調(diào)試結(jié)果,如下圖:

image

 

三、 部署模板到文檔庫(kù)

程序都調(diào)試好了,應(yīng)該部署到文檔庫(kù)中,如何部署呢?

1. 啟動(dòng)文件菜單中的發(fā)布向?qū),把模板發(fā)布到C:盤(pán)的根文件夾下,如下圖:

image

 

image

image

image

image

 

2 把剛才發(fā)布的模板上傳到管理中心,并激活到網(wǎng)站集

進(jìn)入管理中心,的“應(yīng)用程序管理”頁(yè)面,如下圖點(diǎn)擊進(jìn)入上傳頁(yè)面:

image

 

image

 

點(diǎn)擊上傳后,再點(diǎn)擊確定,進(jìn)入模板的列表頁(yè)面,如下圖把這個(gè)模板激活到網(wǎng)站集:

image

在配置頁(yè)面里,如下圖配置好使用這個(gè)模板的網(wǎng)站集:

image

3 設(shè)置文檔庫(kù)

1)首先打開(kāi)第一步創(chuàng)建的“采購(gòu)申請(qǐng)”文檔庫(kù)的高級(jí)設(shè)置,打開(kāi)內(nèi)容類(lèi)型管理,并配置為網(wǎng)頁(yè)顯示這個(gè)表單庫(kù)如下圖:

image

 

2)如下圖添加“采購(gòu)申請(qǐng)單”內(nèi)容類(lèi)型:

image

 

如下圖把采購(gòu)申請(qǐng)單添加進(jìn)入右邊

image

結(jié)果如圖:

 

image

 

 

 

 

 

 

 

 

 

 

 

 

3)把這個(gè)內(nèi)容類(lèi)型設(shè)置為唯一模板,并把原有的表單模板刪除掉,

點(diǎn)擊“更改’新建’按鈕的順序和默認(rèn)內(nèi)容類(lèi)型”,

image

 

采購(gòu)申請(qǐng)單,設(shè)置為第1內(nèi)容類(lèi)型,如下圖:

 

image

點(diǎn)擊進(jìn)入表單內(nèi)容類(lèi)型的設(shè)置界面,點(diǎn)擊刪除:

image

 

四、測(cè)試結(jié)果

如下圖,點(diǎn)擊新建

image

 

結(jié)果如下圖,一切正常:

image

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    第 1 樓 山東淄博電信 網(wǎng)友 客人 發(fā)表于: 2013/1/15 8:58:58
    不錯(cuò)

    支持( 0 ) 蓋樓(回復(fù))

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱(chēng):
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)