嗨,我是新來的sharepoint和caml世界,所以任何提示指向我在正確的方向有幫助。Sharepoint Camlex Caml加入錯誤
我拿起了Camlex https://camlex.codeplex.com/庫來幫助我以一種很好的方式進行caml查詢。
所有運作良好,直到我在InnerJoin
var caml =
Camlex.Query().
InnerJoin(x => x[CesaDocument.DocType_field].PrimaryList(CESAContext.Documents).ForeignList(CESAContext.DocumentType)).
Where(x => (string)x[CesaDocument.RiOID_field] == id).
Scope(ViewScope.RecursiveAll).ToCamlQuery();
添加起初代碼拋出了加入末 - 相信這是我得到的源代碼的問題,我設法得到在開始時加入。
因此,這給了我這個代碼。
<View Scope="RecursiveAll">
<Joins> <Join Type="INNER" ListAlias="Document Types">
<Eq> <FieldRef List="Documents" Name="Doc_x0020_Type" RefType="Id" />
<FieldRef List="Document Types" Name="Id" />
</Eq> </Join> </Joins> <Query> <Where> <Eq>
<FieldRef Name="RiO_x0020_ID" />
<Value Type="Text">1</Value>
</Eq> </Where> </Query></View>
但仍然錯誤 - 給我這個代碼。
<nativehr>0x80070057</nativehr><nativestack></nativestack>
當我調用執行功能。
List list = null;
ListItemCollection ListCollection = null;
list = this.Web.Lists.GetByTitle(List);
ListCollection = list.GetItems(query);
this.Load(ListCollection);
this.ExecuteQuery();
return ListCollection;
谷歌搜索似乎帶來了轉allowunsafeUpdates=true
,但我使用的Micrsoft.Sharepoint.Client對象,我看不到屬性我也沒有更新。 我已將Caml查詢粘貼到SP CAML Query Helper Online中,並按預期運行。
我正在做這個對嗎? 我試過幾種方法,但無濟於事。 我應該使用SPQuery對象,可以使用CSOM - 如果是的話,那是什麼庫。
我應該在我的連接中使用Document_x0020_Types
嗎? 編輯 - 試過,但沒有奏效。
編輯2 只是認爲這會工作,但沒有。
<Joins>
<Join Type="INNER" ListAlias="Document_x0020_Types">
<Eq>
<FieldRef List="Documents" Name="Doc_x0020_Type" RefType="Id" />
<FieldRef List="Document_x0020_Types" Name="Id" />
</Eq>
</Join>
</Joins>
<View Scope="RecursiveAll">
<Query>
<Where>
<Eq>
<FieldRef Name="RiO_x0020_ID" />
<Value Type="Text">2</Value>
</Eq>
</Where>
</Query>
</View>
編輯3 所以現在我知道一點關於CAML的我能解決我的camlex generater格式。
var caml =
Camlex.Query()
.InnerJoin(x => x[CesaDocument.DocType_field].ForeignList(CESAContext.DocumentType))
.Where(x => (string)x[CesaDocument.RiOID_field] == id)
.Scope(ViewScope.RecursiveAll)
.ToCamlQuery();
只是放棄了主要的位的伎倆!
RiOID是您的文檔列表或文檔類型列表上的字段嗎? – Thriggle
RiOID在「文檔」列表中。它不在類型列表中。 –