我正在使用 Sharepoint 2013 CSR 禁用快速编辑中的列。我想根据列值禁用完整的行或单元格。
例如。如果我有两个状态为待处理的请求,则有一个列请求状态,它是一种选择(待处理/批准)类型,用户可以更改该待处理列以进行批准。一旦获得批准,应禁用请求状态列或禁用整行。有可能吗?
我正在使用下面的脚本,但它禁用了完整的列。
<script type="text/javascript">
var updateViewerFields=["Request Status","Request Id"];
(function updateView() {
var overrideContext = {};
overrideContext.Templates = overrideContext.Templates || {};
overrideContext.Templates.OnPreRender = function(ctx) {
for(j=0; j<ctx.ListSchema.Field.length; j++)
{
var f = ctx.ListSchema.Field[j];
for(i=0;i<updateViewerFields.length;i++){
if(f.DisplayName == updateViewerFields[i]){
f.AllowGridEditing=false;
}
}
}
}
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideContext);
})();
</script>
我正在尝试下面的脚本,但没有运气
overrideContext.Templates.OnPostRender = function(ctx) {
var rows = ctx.ListData.Row;
//console.log(rows);
for (var i=0;i<rows.length;i++)
{
var isApproved = rows[i]["Request_x0020_Status"] == "Approved";
if (isApproved)
{
//alert("Please confirm");
var rowElementId = GenerateIIDForListItem(ctx, rows[i]);
var tr = document.getElementById(rowElementId);
//tr.style.backgroundColor = "#ada";
console.log(tr);
}
}