Sharepoint 2013 CSR を使用して、クイック編集で列を無効にしています。列の値に基づいて行またはセル全体を無効にしたい。
例えば。ステータスが保留中のリクエストが2つある場合、ユーザーが保留中の列を変更して承認できる選択肢(保留中/承認)タイプの列リクエストステータスが1つあります。承認されたら、リクエスト ステータス列を無効にするか、行全体を無効にする必要があります。それは可能ですか?
以下のスクリプトを使用していますが、列全体が無効になります。
<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);
}
}