2

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);

    }
  }
4

0 に答える 0