2

我正在使用 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);

    }
  }
4

0 回答 0