在做sharepoint的列表查詢的時候,經常要用到caml,今天我在做乙個工作流授權列表的查詢,裡面要求根據人員、工作流名稱、授權開始時間和授權結束時間找到對應的授權人,沒有找到就返回本人。使用caml querybuilder生成了查詢,然後修改了其中的對應的變數,進行查詢。結果發現查詢結果有問題。原來是在caml中使用的日期型別的表示必須是一種國內很少用的特殊的格式,,形如"2011-06-09t15:11:20z"網上找了一下,使用sputility.createiso8601datetimefromsystemdatetime
這個函式就可以生成這種格式,當然,其實是有datetime.tostring(「格式」)也是可以的。查詢的caml是這樣的:
string dstring =sputility.createiso8601datetimefromsystemdatetime(datetime.now);q.query = @"
" + wfname + @"
" + us.id + @"
" + dstring + @"
" + dstring + @"
";
這樣做以後進行查詢,大部分情況都對了,但是有時候還是會不對,那就是在當天的時候。比如我設定了開始時間是2009-4-9 10:00:00,而現在的時間是9號的14點,但是查詢卻沒有返回結果,經過多次試驗,終於找到原因,原來是根本沒有對時間字段進行比較,而只是對日期進行比較,由於4月9號並不大於4月9號,所以就找不到結果。
要進行時間欄位的比較,那麼需要在caml中的value欄位上新增includetimevalue='true',新增後就可以進行時間欄位的比較了。
string dstring =sputility.createiso8601datetimefromsystemdatetime(datetime.now);q.query = @"
" + wfname + @"
" + us.id + @"
" + dstring + @"
" + dstring + @"
";
這裡我寫的時候,犯了個錯,把includetimevalue='true'寫到fieldref中去了,以為就跟lookupid='true'一樣,結果老是查詢不比較時間字段。
CAML 案例 sharepoint搜尋功能
jianyi寫的camlquery 和smartquery非常強大,為了使他更強大 更自動化,增加乙個listquerywebpart,1.通過smartquery動態生成查詢控制項 2.通過camlquery生成查詢語句 正在討論增加基於iquerycontrol介面的控制項型別擴充套件,使得開發...
SharePoint 中AJAX請求報錯
前言 最近,乙個專案跨系統取資料,呼叫其他系統的service,所以就ajax麼。不過,過程不太順利,一直報錯。錯誤資訊 responsetext 錯誤截圖 源 ajax datatype text success function result 後面搜了好多帖子,發現是引數data的問題,需要格式...
如何在SharePoint中Debug
工作忙,廢話少說 1.把assembly對應的dll部署到gac的同時,還需要把對應的.pdb檔案拷貝到gac中,最好的方式是在部署指令碼中用xcopy命令把.pdb檔案拷貝到gac中 2.剩下的工作就和asp.net的debug差不多了,除錯的時候附加到當前的w3wp程序,在需要跟蹤的地方設定斷點...