使用欄位格式化來自定義SharePoint(八)
部落格地址:http://blog.csdn.net/FoxDave
Expressions
txtContent的值、樣式屬性和屬性(attribute)屬性可以以表示式的形式展示,它們會在執行時根據當前欄位或列表項的上下文被解析。表示式物件可以巢狀其他表示式物件。
Excel-style表示式
所有的Excel樣式表示式都以=開始。
簡單的條件表示式會在@me不等於[$Author.email]時返回none,否則返回‘’:
=if(@me != [$Author.email], 'none', '')
再複雜一些的if/else條件表示式如下:
=if([$Sentiment] <= 0.3, 'sp-field-severity--blocked', if([$Sentiment] < 0.9,'sp-field-severity--warning','sp-field-severity--good'))
非條件的一元或二元操作可以像下面這樣寫:
=[$foo] * -7
=sin(@currentField)
=toString(60 + (sin(6.2831853 * @currentField) * 60))
抽象語法樹表示式
下面的例子包含一個表示式物件,執行表示式(@currentField > 40) ? '100%' : (((@currentField * 2.5).toString() + '%')
:
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/column-formatting.schema.json",
"operator": "?",
"operands": [
{
"operator": ">",
"operands": [
"@currentField",
"40"
]
},
"100%",
{
"operator": "+",
"operands": [
{
"operator": "toString()",
"operands": [
{
"operator": "*",
"operands": [
"@currentField",
2.5
]
}
]
},
"%"
]
}
]
}
操作符(Operators)
操作符指定要執行的操作,可用的操作符如下:
-
-
- /
-
- <
- ==
- !=
- <=
-
=
- ||
- &&
- toString()
- Number()
- Date()
- cos
- sin
- ?
- toLocaleString()
- toLocaleDateString()
- toLocaleTimeString()
Binary operators - 標準二元運算子,需要兩個運算域:
-
-
- /
-
- <
- <=
-
=
Unary operators - 標準的一元運算子:
- toString()
- Number()
- Date()
- cos
- sin
- toLocaleString()
- toLocaleDateString()
- toLocaleTimeString()
Conditional operator - 條件運算子:?
運算域
指定表示式的引數或運算域。通常是條件表示式或基本值的陣列。
特殊字串值
txtContent的值、樣式和屬性可以是字串或表示式物件。一些特殊的字串可以用於從列表的欄位或使用者上下文中獲取值。
“@currentField”
會轉換為當前欄位的值。
一些欄位型別表示為物件型別。從物件中輸出值需要指定物件中的特定屬性。例如,如果當前欄位是一個使用者/組型別,指定@currentField.title來獲取使用者的顯示名,即在列表檢視中顯示的名稱。下面會列舉一些物件型別的欄位以及它們的屬性。
注意:@currentField.title預設返回一個人的顯示名。但是如果使用者欄位的展示欄位被調整了,它就可能改變了title屬性的值。例如,一個使用者欄位將顯示欄位配置為了部門,那麼我們從title取到的就是該使用者的部門了。
使用者欄位
{
"id": "122",
"title": "Kalya Tucker",
"email": "kaylat@contoso.com",
"sip": "kaylat@contoso.com",
"picture": "https://contoso.sharepoint.com/kaylat_contoso_com_MThumb.jpg?t=63576928822"
}
日期/時間欄位
日期/時間欄位的值可以通過不同的方式獲取,基於我們想要讓日期以什麼格式顯示。以下三個方法支援將日期轉換位指定的格式:
- toLocaleString() - 顯示完整的日期時間。
- toLocaleDateString() - 只顯示日期。
- toLocaleTimeString() - 只顯示時間。
例如,下面的JSON會顯示當前欄位(假設是日期欄位)的完整日期時間。
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/column-formatting.schema.json",
"elmType": "div",
"txtContent": {
"operator": "toLocaleString()",
"operands" : ["@currentField"]
}
}
查閱項欄位
{
"lookupId": "100",
"lookupValue": "North America",
}
下面的例子展示瞭如何使用查閱項欄位。
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/column-formatting.schema.json",
"elmType": "a",
"txtContent": "@currentField.lookupValue",
"attributes": {
"href": {
"operator": "+",
"operands": [
"https://contoso.sharepoint.com/teams/Discovery/Lists/Regions/DispForm.aspx?ID=",
"@currentField.lookupId"
]
},
"target": "_blank"
}
}
超連結欄位
{
"desc": "SharePoint Patterns and Practices",
}
如要引用URL的值,使用@currentField。
下面的例子展示瞭如何使用超連結欄位。
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/column-formatting.schema.json",
"elmType": "a",
"txtContent": "@currentField.desc",
"attributes": {
"href": "@currentField",
"target": "_blank"
}
}
**"[InternalName]。例如,使用欄位的內部名稱MarchSales獲取欄位的值,使用[SalesLead.title]。
“@me”
該值會轉為當前登入使用者的郵箱地址。
該欄位可以用來顯示當前使用者的郵件地址,但更多的是用在條件判斷上。下面是一個為使用者欄位設定顏色的例子,如果當前使用者跟使用者欄位一樣則標記為紅色,反之為藍色。
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/column-formatting.schema.json",
"elmType": "div",
"txtContent": "@currentField.title",
"style": {
"color": {
"operator": "?",
"operands": [
{
"operator": "==",
"operands": [
"@me",
"@currentField.email"
]
},
"red",
"blue"
]
}
}
}
“@now”
該值會轉為當前日期和時間。
“@window.innerHeight”
該值會轉為在列表渲染完後等於瀏覽器視窗高度(畫素表示)的數值。
“@window.innerWidth“
該值會轉為在列表渲染完後等於瀏覽器視窗寬度(畫素表示)的數值。
相關文章
- 使用欄位格式化來自定義SharePoint(二)
- 使用欄位格式化來自定義SharePoint(三)
- 使用欄位格式化來自定義SharePoint(一)
- 使用欄位格式化來自定義SharePoint(六)
- 使用欄位格式化來自定義SharePoint(五)
- 使用欄位格式化來自定義SharePoint(七)
- 使用欄位格式化來自定義SharePoint(四)
- 使用檢視格式化來自定義SharePoint
- 使用自定義任務審批欄位建立 SharePoint 順序工作流
- PhpCms自定義欄位的使用說明PHP
- Request 增加自定義欄位的方式
- laravel model自定義軟刪除欄位Laravel
- Mybatis-plus排除自定義欄位不查詢MyBatis
- 自定義ALV欄位分類時注意
- java欄位格式化Java
- SharePoint JavaScript 更新使用者和組欄位JavaScript
- CodingBlock客戶化自定義新欄位BloC
- 織夢後臺新增自定義欄位樣式修改
- DEDE檢測重複自定義欄位禁止釋出
- django admin中增加自定義超連結欄位Django
- SAP不同的產品是如何支援使用者建立自定義欄位的
- Laravel6:自定義多欄位登入,使用者名稱,郵箱等Laravel
- DedeCMS的checkbox多選欄位自定義取值的方法
- 升級後欄位引數有自定義函式失效函式
- WordPress自定義欄位獲取get_post_meta函式函式
- SD--如何在輸出控制中增加自定義欄位
- Qt隱藏系統標題欄,使用自定義標題欄QT
- UIWebView自定義選單欄UIWebView
- Pytest系列(八) - 自定義標記mark的使用
- 多型關聯自定義的型別欄位的處理多型型別
- 《物料清單彙總查詢》二開增加自定義欄位
- 織夢多行文字自定義欄位 支援自動換行
- hadoop 自定義格式化輸出Hadoop
- JavaScript自定義時間日期格式化JavaScript
- Laravel 自定義表單請求驗證忽略某些欄位驗證Laravel
- Log4Net 新增自定義欄位並儲存到資料庫資料庫
- 自定義側邊快速索引欄索引
- Android 自定義標題欄Android