快速和簡單: 提供一個 Web 網站,在 C# 中使用 SharePoint 物件模型

我試著尋找一個小程式碼片段代碼表明如何可以在網站集合中創建新的 SPWeb. 我沒找到作為很快或很容易,不出所料所以我會在這個問題上耳光在一起的一個小的條目.

此代碼創建一個新的 Wiki 網站:

 SPSite siteCollection;

    siteCollection = 新增功能 SPSite("HTTP://conchang-o9l8qi");

    SPWeb w = siteCollection.OpenWeb();

    w.Webs.Add("xyzzy", "xyzzy 標題",
        "xyzzy 描述", 1033, SPWebTemplate.WebTemplateWIKI, false, false);

我最初的搜索失敗,因為我一直在尋找像"提供網站使用 sharepoint 物件模型的短語" 等.

如果你 搜索 為"Webs.Add()", 你會發現一些非常有用的博客條目, MSDN 文章和關於這個問題深入的 SDK 文檔. 我絕對推薦 此網站.

</結束>

訂閱我的博客.

Technorati 標籤:

與 Web 服務集成 SharePoint 設計器的工作流

我已經打與 SharePoint 設計器的自訂操作一段時間了 (請看這裡 對於一些詳細的東西, 如果你有興趣,).

我當前的專案中, 我們需要做一些相當繁重的工作和我們想要使用聲明性 SPD 工作流來管理相關的業務流程.

長話短, 這是完全有可能. 我擴展我 Codeplex 專案來調用"家務助理服務" 現在我們可以調用 web 服務直接從 SPD 工作流.

這裡是簽名:

 公眾 字串 調度程式(
        Guid WebID, // 通過運行時環境
        Guid SiteID, // 通過運行時環境
        字串 ListID, // RTE 通過 (不知道為什麼這是一個字串, 沒有一個 GUID)
        int ListItemID, // RTE 通過.
        字串 XmlMessage) // 通過使用者 SPD 中聲明.

這利用了這一事實,我們可以獲得重要工作流資訊, 像網站, 清單 ID, 等. 這是很好的印證在幾個地方那些您感興趣創建您自己的自訂操作. 這個想法是要提取的 XML 字串,如使用者派遣一個適當的程式提供的. 有趣的東西!

不幸的是, 這顯然是一張單程票降到 "Goosey Loosey" anti-pattern 土地, 但是比撞磚牆要好🙂

如果你做它,即使你知道它是反反模式是它嗎?

我希望能在不久的將來把這個包裝內 Codeplex. 如果你有興趣在我這樣做, 給我 poke (電子郵件 或留下評論) 我會更加熱心

</結束>

訂閱我的博客.

Technorati 標籤: ,

周日滑稽: “我不知道是否您的密碼是 …”

最近買午餐給弟弟 (像往常一樣) 最後我們談論有趣的事情,我們做了我們各自的院校. 在我的母校, 拉斐特學院, IT 部門的學術支援了包容性很強的思路. 我們有大量的繩索,我利用了,有時.

兩個我最喜歡的記憶是關乎我的好朋友, 加布. 他犯了可怕的錯誤,告訴他"我是一年級的新生年人, 但我有二年級會議常規" 由於他已採取的各項先進的安置類, 等. 我們很多人都同樣位於但我們沒有這麼多談論它. 他高中最後一年, 當我們向人們介紹了他, 我們會說"這是蓋柏. 他是一位高級, 但他有二年級常規".

學院有一些 Sun 工作站伺服器運行 X 視窗. 他們有巨大的顯示器和工程師們將它們用於 CAD 和其他無聊的工程師東西. 我們 CS 人用它們來學習程式設計和, 答案是肯定的, 玩遊戲.

我們不喜歡電腦無助工程師到很多所以我們要做的最喜歡的事情之一就是 telnet 到框中他們是在和運行 X 眼 對他們. 這將彈出一雙眼睛跟隨滑鼠左右在螢幕. 你可以彈出甚至更多,從字面上有十幾個或多個運行的 X 眼應用程式. 當一個倒楣的工程師試圖關閉一個又一個的 X 眼並低聲嘀咕時,盡量不要笑出聲 🙂

我們也在那些箱子上玩耍 X 迷航. 要做到這一點, 你不得不下載源, 只要你能找到他們,建立它得到各種依賴項. 我不是一個複雜的 C 程式師, 但我可以讀標頭檔. 我正在通過這些,發現像指令"#DEFINE MAX_TORPEDO_DISTANCE 10". 我玩了,增加階段和魚雷的射程和火力, 重新生成它,然後摧毀加布下一次我們玩了.

加布也是一個電視節目叫做的超級粉絲 佈雷克的 7. 從未見過它, 但這並不妨礙我堅持那博士. 高級顯示是誰. 爭論有時會變得激烈🙂

一天, 我想到我可能會猜到他的 UNIX 密碼. 我有一天在他旁邊坐下,高聲宣佈, "我要去現在猜測您的密碼, 加布。" "是的, 權利" 是他的回答. 然後登錄, 輸入他的使用者 id, 轉過身來面對他, 鍵入並大聲說:, "我不知道它是否 B-L-A-K-E-7" ? 觸摸打字了從未豐厚回報一樣一樣那一天.

下個 星期 (或很快): 更多電腦室滑稽的事從大學.

沒有任何共用? 留下評論或電子郵件我,我會將它們發佈在這裡.

</結束>

訂閱我的博客.

Technorati 標籤:

簡單的解釋: “值並不屬於在預期的範圍。”

更新: 匿名的海報留下偉大的評論關於內部名稱. 一定要閱讀它.

使用事件接收器和其他代碼引用的物件模型通過 SharePoint 清單項時, 我常常犯錯誤,生成此執行階段錯誤:

載入時出錯,在 xyzzy 運行事件接收器 Conchango.xyzzyEventReceiver, 版本 = 1.0.0.0, 文化 = 中性, Publickeytoken) = 0dc50a750396c3ac. 附加資訊是下面. : 值不在預期的範圍內.

這是一個相當通用的錯誤,可能造成許多不同的方式. 不過, 一個簡單的解釋是,我錯誤地引用欄位. 如果欄位的名稱是"到期日", 我必須在事件接收器中引用它像這樣:

屬性。ListItem["截止日期"]

當我拼錯或引用該欄位時,使用錯誤的大小寫, SharePoint 生成上述提到的執行階段錯誤. 舉個例子, 這是不對的:

屬性。ListItem["截止日期"]

</結束>

訂閱我的博客.

Technorati 標籤:

最終使用者快速提示: 排序視圖中的文件庫, 清單, 等.

我們可以, 應和做在 SharePoint 清單中創建多個視圖 (文件庫, 自訂清單, 等). SharePoint 總是列出可用的視圖按字母順序排列. 我們不能改變這使用框的功能. 如果它可以通過自訂 (我不確定它可以), 這是遠為技術為典型的最終使用者.

如果您想要控制中的 SharePoint 的順序列出了可用的視圖, 只是開頭的數位或字母的視圖名稱, 如在:

1 – 按物料類型
2 – 所有文檔
3 – 截止日期

-或-

A – 按物料類型
B – 所有文檔
C – 截止日期

我還創建了視圖的目的是嚴格飼料 KPI. 我一直在關注此命名約定:

Z_KPI_[說明]

這導致我"KPI" 視圖,以顯示在清單的底部.

</結束>

訂閱我的博客.

周日滑稽: “當我還是一個小男孩”

作為一個家長, 我在某個地方發現沿該線"當我是個小男孩" 把戲.

我的兒子, 大概四、 五次, 在玩一個氣球和喜歡玩氣球的最小男孩, 他突然它. 他是非常生氣. 世界已經走到盡頭. 我對他說, "當我還是小男孩, 一個氣球,它彈出並最終, 我得到了一個新的氣球。" 它似乎能説明他應付他的損失,並導致一個有趣的談論它是什麼樣子時,我是一個小男孩.

那工作以及我並安慰技術使用它多次在未來一段時間. 我做一次陷入困境時他怪物牧場主 3 生物死了. 我談我的狗, 王子, 在一次車禍中喪生. 這一次, 他的反應是, "現在我覺得壞的兩件事!" 我一直避免使用"當我還是一個小男孩" 在那之後的安慰技術.

在死狗事件發生前, 然而, 我也已經開始使用這項技術要說服他去做家務. "當我是個小男孩, 我不得不走出去,讓報紙", "清潔我的房間", "讓媽媽她杯咖啡", 等.

這也是相當成功的一段時間, 但他開始越來越多地反抗暴政的我的童年. 一個事件, 特別是, 標誌著結束. 我告訴他要把從路邊的垃圾罐帶回車庫. 他認為,我的回應, "當我是個小男孩, 我不得不把垃圾帶回車庫。" 他的回答, "哦是的! 好吧,當你是個小男孩, 那是愚蠢的!".

</結束>

訂閱我的博客.

Technorati 標籤:

不能擔保視圖和列的清單和文件庫

更新 (02/29/08): 這個新的 codeplex 專案似乎提供保護單個列的方法: http://www.codeplex.com/SPListDisplaySetting. 如果您有任何與它合作的經驗, 請留下評論.

論壇海報頻頻問這樣的問題: "我有一個管理器視圖和工作人員的清單的視圖. 如何,工作人員不能使用它安全的管理器視圖?"

他們還經常問的一個相關的問題: "我想要保護的特定中繼資料的列,以便只有經理可以編輯該列,雖然其他人可能不甚至看到它。"

這些答案適用于這兩個 WSS 3.0 和苔蘚:

  • SharePoint 不提供出框支援爭取意見.
  • SharePoint 不安全列提供出框支援.

有幾種技術一可以按照滿足這些類的安全要求. 這裡是我能想到的:

  • 使用預置的專案級安全. 意見總是榮譽專案級安全配置. 事件接收器和/或工作流可以自動執行安全任務.
  • 使用的個人檢視為"特權" 視圖. 這些都是容易設置. 不過, 由於其"個人" 性質, 這些需要為每個使用者配置. 使用標準安全配置,以防止別人從創建個人檢視.
  • 使用資料檢視 web 部件並實現某種 AJAXy 安全修整解決辦法.
  • 滾你自己清單顯示功能,並納入安全修整列級.
  • 修改資料輸入表單和 JavaScript 將與一起使用的安全模型來實現列級安全修整.
  • 使用 InfoPath 表單輸入資料. 實現通過 web 服務調用到 SharePoint 和有條件地隱藏欄位所需的列級安全修整.
  • 卷自己的 ASP.NET 資料條目函數實現列級安全修整.

這些選項均沒那麼好, 但有至少一條路徑,如果您需要遵循, 即使很難.

請注意: 如果你去這些路徑的任何, 別忘了"行動-> 打開 Windows 資源管理器". 你要確保你使用該功能以確保它不會作為一個"後門工作測試" 和擊敗你的安全計畫.

如果您有其他的想法或確保列或視圖的經驗, 請 電子郵件通知我 或留下評論,我就會更新此作為適當的帖子.

</結束>

訂閱我的博客.

Technorati 標籤:

快速提示: BDC ADF 的版本號是你的朋友

如果您正在手動編碼 ADF 的檔,並做了大量的測試/代碼/導入週期, 使用版本號來使你的生活更輕鬆.

我不願承認這一點, 但直到這一周, 我總是被刪去的 ADF 和重新導入它. 這會打破我業務資料列,並讓我將它們重新連接. 所有不必要.

檔這下"很明顯你一旦看見".

示例:

<LobSystem
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://BDCMetadata.xsd schemas.microsoft.com/office/2006/03/BusinessDataCatalog" 類型="Web 服務" 版本="1.2.0.0" 名稱="xyzzyDocumentReview" xmlns="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">

更改的版本並重新導入和現有的業務資料列使用更新後的版本會自動與不需要的額外配置.

</結束>

訂閱我的博客.

Technorati 標籤:

解決方案: BDC 選取器顯示結果只有一的列

在我去上企圖在提供 使用 BDC 的更多有用的查閱列, 我碰了壁與 BDC 選取器. 如果你還沒有看到它, BDC 機械臂是類似于一個人選取器,不同之處在于它與"業務資料"類型的列一起工作.

您通過的業務資料列,如圖所示的打開的書圖示上按一下訪問選擇器:

圖像

上面的圖片顯示業務資料列,稱為"主文件 Id". 該列被連接, 通過 BDC, 向 web 服務. Web 服務返回兩列資訊: 文件識別碼 和標題. 這裡的經營宗旨是提供"此文檔基於" 功能. 使用者選擇"大師" 文檔和當他們保存, 事件接收器從引用大師複製元資料欄位.

預設情況下, BDC 選取器看起來像這樣,當我搜索文檔的 ID ="38":

clip_image002

這就是很有説明, 但還不夠好. 人們不是按 Id, 他們認為標題和/或其他中繼資料. 選擇器允許您搜索其他列 (例如:. 標題) 但不會顯示的標題它發現的實際清單, 只是他們 DocId 的如下所示:

clip_image002[1]

(螢幕擷取畫面不是那麼大,因為我沒有挑選返回任何有效的結果搜索, 但你可以看到,如果它發現了一些結果, 它只會顯示 DocId 的, 沒有標題).

我搜索的高、 低這個問題的答案和失敗. 我的同事, 尊者 Jonathan 布拉德肖, 曾面對及解決這一問題. 當我伸手向他求助, 他指出我正確的方向.

配置選擇器以顯示多個列,通過"ShowInPicker" 在 ADF 中的屬性:

<屬性 名稱="ShowInPicker" 類型="System.Boolean">真正的</屬性>

在更多的細節:

  <!-- 標題 -->
  <視覺化表示形式 TypeName="System.String" 名稱="標題" >
    <LocalizedDisplayNames>
      <LocalizedDisplayName LCID="1033">標題</LocalizedDisplayName>
    </LocalizedDisplayNames>
    <屬性>
      <屬性 名稱="DisplayByDefault" 類型="System.Boolean">真正的</屬性>
      <屬性 名稱="ShowInPicker" 類型="System.Boolean">真正的</屬性>
    </屬性>
  </視覺化表示形式>

將此屬性設置引入了一個小問題. 只要你設置它一次, 你需要為每個您想要顯示的列設置. 以我為例, 預設情況下顯示 DocId BDC 選取器. 不過, 一次我添加了"ShowInPicker" 標題, DocId 不再顯示. 我通過顯式設置Doc ID的ShowInPicker屬性來解決此問題.

下面是結果:

圖像

(我會解釋的樣子很奇特的"168 – CamlSchema.xsd" 未來博客文章中的構建. 在短, 它是一個字串,它允許略有更好的使用者體驗).

答案是肯定的, 寫完這篇博客, 我只是做一個搜索的"ShowInPicker" 發現許多命中, 包括這一個: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. 它解釋了該屬性的含義以及其他一些好的BDC內容.

</結束>

訂閱我的博客!

Technorati 標籤: