如何使用CSR在SharePoint 2013快速编辑中隐藏/禁用特定单元格?

时间:2016-06-01 17:54:44

标签: sharepoint-2013 jslink

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

    }
  }

0 个答案:

没有答案