none
ライブラリに対してのJSリンク RRS feed

  • 質問

  • SharePointOnlineを使用しています。

    カスタムリストに集計値列を追加し、その中身がAなら赤色に表示するように、JSリンクを挿入して、実装しています

    しかし、カスタムリストにはJSリンクは有効になるのですが、ライブラリに適応しても色が変わらないのですが、ライブラリには不可なのでしょうか?

    内部列名も変更しています。

    よろしくお願いします。


    2018年2月16日 3:54

回答

  • なるほどー。

    overrideCtx.ListTemplateType = 100;

    があるので、元の書き方だと「このスクリプトはカスタムリストの時だけ動かしますよ」という意味になっていたんですね。

    「新規」以外の処理を書くのであれば、条件文を追加する必要があるかと思います。

    if(orgVal == '新規'){
    retVal = '<b style="color:#FF0000">' + orgVal + '</b>';
    }else{
    retVal = orgVal;
    }

    として、「新規」以外の場合は、もともと入っていた文字をそのまま書き出すように書けば良さそうに思えます。


    2018年2月19日 6:01

すべての返信

  • 新規でカスタムリストを作成し、JSリンクを適用させたら、反映されましたが、JSリンクで”Aという文字なら赤色表示”

    と指定した文字以外は表示されなくなってしまいました。

    アイテムの編集で中身を確認するとデータは正常に入っていました。

    2018年2月16日 7:58
  • ダウンロード最小化戦略は非アクティブなので、影響はないと思います。

    2018年2月16日 7:59
  • 解決いたしました!
    2018年2月19日 2:25
  • どうやって解決されたのか教えて頂けませんか??よろしくお願いします。
    2018年2月19日 2:35
  • 今までカスタムリストに使用していたのが以下の文

    (function(){
    var overrideCtx = {};
    overrideCtx.Templates = {};
    overrideCtx.ListTemplateType = 100;
    overrideCtx.BaseViewID = 1;
    overrideCtx.Templates.Fields = {
    '_x66f4__x65b0_': { 'View' : Color }
    };
    SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
    function Color(ctx){
    var retVal;
    var orgVal = ctx.CurrentItem._x66f4__x65b0_;
    if(orgVal == '新規'){
    retVal = '<b style="color:#DA4F49">' + orgVal + '</b>';
    }

    return retVal;
    }
    })();

    ライブラリ用に変更したのが以下の文です。
    overrideCtxの先頭にdocを入れることによってできるようになりました。


    しかし、ここで言うところの新規以外のワードが入った場合は、文字色が透明になってしまうのは解決できていません。

    (function(){
    var docoverrideCtx = {};
    docoverrideCtx.Templates = {};

    docoverrideCtx.Templates.Fields = {
    '_x66f4__x65b0_': { 'View' : Color }
    };
    SPClientTemplates.TemplateManager.RegisterTemplateOverrides(docoverrideCtx);
    function Color(ctx){
    var retVal;
    var orgVal = ctx.CurrentItem._x66f4__x65b0_;
    if(orgVal == '新規'){
    retVal = '<b style="color:#FF0000">' + orgVal + '</b>';
    }

    return retVal;
    }
    })();

    2018年2月19日 4:03
  • なるほどー。

    overrideCtx.ListTemplateType = 100;

    があるので、元の書き方だと「このスクリプトはカスタムリストの時だけ動かしますよ」という意味になっていたんですね。

    「新規」以外の処理を書くのであれば、条件文を追加する必要があるかと思います。

    if(orgVal == '新規'){
    retVal = '<b style="color:#FF0000">' + orgVal + '</b>';
    }else{
    retVal = orgVal;
    }

    として、「新規」以外の場合は、もともと入っていた文字をそのまま書き出すように書けば良さそうに思えます。


    2018年2月19日 6:01
  • overrideCtx.ListTemplateType = 101;

    ということは、ドキュメントライブラリように101でもいけそうですね!

    2018年2月19日 6:24