2009-08-17 79 views
2

我在玩SharePoint服務器,並試圖以編程方式將服務請求添加到Microsoft的呼叫中心應用程序模板。到目前爲止,我已經取得了相當不錯的成績。我可以添加一電一客戶指定和分配一個特定的支持技術:從SharePoint字段選擇列中檢索所有項目

private enum FieldNames 
{ 
    [EnumExtension.Value("Service Request")] 
    ServiceRequest, 
    [EnumExtension.Value("Customer")] 
    Customer, 
    [EnumExtension.Value("Service Representative")] 
    ServiceRepresentative, 
    [EnumExtension.Value("Assigned To")] 
    AssignedTo, 
    [EnumExtension.Value("Software")] 
    Software, 
    [EnumExtension.Value("Category")] 
    Category 
} 
private void CreateServiceCall(string serviceCallTitle, string customerName, string serviceRep) 
{ 
    SPSite allSites = new SPSite(siteURL); 
    SPWeb site = allSites.AllWebs[siteName]; 
    SPListItemCollection requestsList = site.Lists[serviceRequests].Items; 
    SPListItem item = requestsList.Add(); 

    SPFieldLookup customerLookup = item.Fields[FieldNames.Customer.Value()] as SPFieldLookup; 

    item[FieldNames.ServiceRequest.Value()] = serviceCallTitle; 

    if (customerLookup != null) 
    { 
     using (SPWeb lookupWeb = allSites.OpenWeb(customerLookup.LookupWebId)) 
     { 
      SPList lookupList = lookupWeb.Lists.GetList(new Guid(customerLookup.LookupList), false); 
      foreach (SPListItem listItem in lookupList.Items) 
      { 
       if (listItem[customerLookup.LookupField].ToString() != customerName) continue; 

       item[FieldNames.Customer.Value()] = new SPFieldLookupValue(listItem.ID, customerName); 
       break; 
      } 
     } 
    } 
    SPUserCollection userCollection = site.SiteUsers; 
    if (userCollection != null) 
    { 
     foreach (SPUser user in userCollection) 
     { 
      if (user.Name != serviceRep) continue; 

      item[FieldNames.AssignedTo.Value()] = user; 
      break; 
     } 
    } 

    item.Update(); 

    site.Close(); 
    allSites.Close(); 
} 

我添加了兩個自定義列(類別,軟件)的默認列表:

alt text

我填充這兩個這些列內的SharePoint,現在我想檢索這些數據,所以我可以在我發佈的代碼片段中使用它來分配適當的類別/軟件等等的電話。我一直無法獲得代碼中的列表,我嘗試過使用item["Software"],site.Lists["Software"]和其他幾個,但到目前爲止我所有的都是null

任何人都可以爲我指出正確的方向嗎?謝謝!

回答

8

SPFieldMultiChoice和相關領域有Choices屬性:

SPFieldMultiChoice software = item.Fields[FieldNames.Software.Value()] as SPFieldMultiChoice; 
StringCollection softwareChoices = software.Choices; 

如果您需要設置的字段中的值,使用SPFieldMultiChoiceValue類型:

SPFieldMultiChoiceValue values = new SPFieldMultiChoiceValue(); 
values.Add("Choice 1"); 
values.Add("Choice 2"); 
item[FieldNames.Software.Value()] = values; 
+0

完美,謝謝! – Anders 2009-08-18 12:47:17

+1

這個例子演示瞭如何從'SPListItem'中檢索'SPFieldMultiChoice'對象 - 注意你也可以從'SPList'中獲得這個對象,這對我來說更有用,因爲我想在獲得List之後訪問Choices屬性參考,但在我開始迭代List的項目之前。 只需在示例中訪問'item.Fields'的方式就可以訪問'SPList.Fields'屬性。 – CBono 2010-02-24 19:39:57

相關問題