7
A
回答
8
服務器對象模型
string siteUrl = "http://mysite";
using (SPSite site = new SPSite(siteUrl))
{
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["my forum"];
for (int i = 0; i < list.Fields.Count; i++)
{
if (list.Fields[i].Title == "xyz")
{
-
-
}
}
}
}
客戶端對象模型
string siteUrl = "http://MyServer/sites/MySiteCollection";
ClientContext clientContext = new ClientContext(siteUrl);
SP.List List = clientContext.Web.Lists.GetByTitle("my forum");
for (int i = 0; i < list.Fields.Count; i++)
{
if (list.Fields[i].Title == "xyz")
{
-
-
}
}
2
我結束了檢索之前,我的操作列表中的字段的詳細信息,並保存在結構中的泛型列表(含每個領域的細節)。然後,我查詢此(通用)列表以查看當前字段是否確實存在於給定(SharePoint)列表中。
// Retrieve detail sof all fields in specified list
using (ClientContext clientContext = new ClientContext(SharePointSiteUrl))
{
List list = clientContext.Web.Lists.GetByTitle(listName);
_listFieldDetails = new List<SPFieldDetails>();
// get fields name and their types
ClientObjectPrototype allFields = list.Fields.RetrieveItems();
allFields.Retrieve(FieldPropertyNames.Title,
FieldPropertyNames.InternalName,
FieldPropertyNames.FieldTypeKind,
FieldPropertyNames.Id,
FieldPropertyNames.ReadOnlyField);
clientContext.ExecuteQuery();
foreach (Field field in list.Fields)
{
SPFieldDetails fieldDetails = new SPFieldDetails();
fieldDetails.Title = field.Title;
fieldDetails.InternalName = field.InternalName;
fieldDetails.Type = field.FieldTypeKind;
fieldDetails.ID = field.Id;
fieldDetails.ReadOnly = field.ReadOnlyField;
listFieldDetails.Add(fieldDetails);
}
}
// Check if field name exists
_listFieldDetails.Exists(field => field.Title == fieldName);
// Struct to hold details of the field
public struct SPFieldDetails
{
public string Title { get; set; }
public string InternalName { get; set; }
public Guid ID { get; set; }
public FieldType Type { get; set; }
public bool ReadOnly { get; set; }
}
11
剛剛發現這一點的同時尋找同樣的事情,但它看起來像SharePoint 2010中有一些建在此,至少在服務器型號:list.Fields.ContainsField("fieldName");
不知道是否存在客戶端雖然。想象一下,這將是一個存儲這些信息的好地方。
3
下面的方法演示如何確定是否使用在List
存在指定列CSOM:
static class FieldCollectionExtensions
{
public static bool ContainsField(this List list,string fieldName)
{
var ctx = list.Context;
var result = ctx.LoadQuery(list.Fields.Where(f => f.InternalName == fieldName));
ctx.ExecuteQuery();
return result.Any();
}
}
使用
using(var ctx = new ClientContext(webUrl))
{
var list = ctx.Web.Lists.GetByTitle(listTitle);
if(list.ContainsField("Title")){
//...
}
}
0
我喜歡的SharePoint加庫,因爲它是真的很乾淨: http://aymkdn.github.io/SharepointPlus/symbols/%24SP%28%29.list.html
$SP().list("My List").get({
fields:"Title",
where:"Author = '[Me]'"
},function getData(row) {
console.log(row[0].getAttribute("Title"));
});
你可以設置一個for循環遍歷整個行並檢查你正在尋找的列是否存在。
3
下面是SharePoint列表的擴展碼(CSOM)
public static bool DoesFieldExist(this List list, ClientContext clientContext, string internalFieldname)
{
bool exists = false;
clientContext.Load(list.Fields, fCol => fCol.Include(
f => f.InternalName
).Where(field => field.InternalName == internalFieldname));
clientContext.ExecuteQuery();
if (list.Fields != null && list.Fields.Count > 0)
{
exists = true;
}
return exists;
}
使用
List targetList = this.Context.Web.Lists.GetById(<ListID>);
targetList.DoesFieldExist(<ClientContext>, <Field internal Name>)
享受:)
2
上面有一些很好的答案。我個人使用過這個:
List list = ctx.Web.Lists.GetByTitle("Some list");
FieldCollection fields = list.Fields;
IEnumerable<Field> fieldsColl = ctx.LoadQuery(fields.Include(f => f.InternalName));
ctx.ExecuteQuery();
bool fieldMissing = fieldsColl.Any(f => f.InternalName != "Internal_Name");
你也可以使用'Where'後的Include方法並檢查返回的collection/field是否爲null。這是關於個人偏好的,因爲這兩個選項都是在客戶端查詢的。
-2
到太多的代碼使用這種
負載場第一則
bool exists= clientContext2.Site.RootWeb.Fields.Any(o => o.Id.ToString() == a.Id.ToString());
相關問題
- 1. C#使用SharePoint客戶端對象模型檢查SharePoint列表權限
- 2. 使用SharePoint客戶端對象模型監聽列表更新
- 3. Sharepoint:將GridView綁定到SharePoint列表(客戶端對象模型)
- 4. SharePoint列表:使用JavaScript客戶端對象模型的列值總和
- 5. 獲取listItem.fieldValues的列表客戶端對象模型Sharepoint 2010
- 6. 讀取列表項目Sharepoint 2010客戶端對象模型
- 7. Sharepoint 2010客戶端對象模型從Url獲取列表項
- 8. Sharepoint客戶端對象模型出錯
- 9. SharePoint 2013 JavaScript客戶端對象模型
- 10. 使用客戶端對象模型添加列表項
- 11. Retriving超鏈接列是在SharePoint列表的URL,使用客戶端對象模型
- 12. 從Sharepoint客戶端獲取weburl客戶端對象模型
- 13. Sharepoint 2010客戶端對象模塊獲取站點URL列表
- 14. 爲什麼在SharePoint中使用客戶端對象模型2013
- 15. Sharepoint的Silverlight客戶端對象模型,是否可以使用executeQuery加載web.Language?
- 16. Sharepoint客戶端對象模型:從包含File.ServerRelativeUrl的列表中加載項目
- 17. 的SharePoint 2010客戶端對象模型 - 獲取當前列表的名稱
- 18. Sharepoint客戶端對象模型:如何獲取列表中的所有字段
- 19. Sharepoint客戶端對象模型。如何獲得當前列表視圖?
- 20. 使用SharePoint客戶端對象模型重命名文件?
- 21. 使用客戶端對象模型sharepoint獲取日期字段
- 22. 更新ProjectedField與SharePoint JOIN使用JavaScript客戶端對象模型
- 23. 使用客戶端對象模型備份SharePoint Online「office365」
- 24. 使用客戶端對象模型Sharepoint 2010填充Treeview
- 25. 的SharePoint 2013 - 使用客戶端對象模型
- 26. 使用SharePoint 2010客戶端對象模型編輯文件
- 27. 添加現有的WebPart使用Sharepoint客戶端對象模型
- 28. SharePoint 2010:使用客戶端對象模型計數ListItem附件
- 29. 如何檢查對象列表中是否存在對象?
- 30. Sharepoint客戶端對象模型查詢過濾器不工作
這是你的榜樣 – axk 2010-12-09 19:16:12