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();
}
我添加了兩個自定義列(類別,軟件)的默認列表:
我填充這兩個這些列內的SharePoint,現在我想檢索這些數據,所以我可以在我發佈的代碼片段中使用它來分配適當的類別/軟件等等的電話。我一直無法獲得代碼中的列表,我嘗試過使用item["Software"]
,site.Lists["Software"]
和其他幾個,但到目前爲止我所有的都是null
。
任何人都可以爲我指出正確的方向嗎?謝謝!
完美,謝謝! – Anders 2009-08-18 12:47:17
這個例子演示瞭如何從'SPListItem'中檢索'SPFieldMultiChoice'對象 - 注意你也可以從'SPList'中獲得這個對象,這對我來說更有用,因爲我想在獲得List之後訪問Choices屬性參考,但在我開始迭代List的項目之前。 只需在示例中訪問'item.Fields'的方式就可以訪問'SPList.Fields'屬性。 – CBono 2010-02-24 19:39:57