1

RoomEquipmentの 2 つのリストがあります。

Equipmentリストには、Roomリストへのルックアップ フィールドがあります。

関連するすべての機器を部屋の単純な表形式の表示フォームに表示したい。

どうすればこれを達成できますか?

4

2 に答える 2

0

OK、これを達成する可能性はたくさんあります。考えられる見栄えの良い解決策は次のとおりです。

  1. リスト内の市場価値のクリックをオーバーロードし (JSLink を使用して実行できます)、すべての機器がリストされているモーダル ダイアログ ページを開きます (REST クエリを使用して取得)
  2. リスト内の市場価値のクリックをオーバーロードし (JSLink を使用して実行できます)、同じページにリダイレクトしますが、同じビューへのフィルターを使用します。
  3. 市場の数が多くない場合は、市場ごとにビューを作成することもできます (あまり良くありませんが、コーディングの労力を軽減します)

他に探しているものがある場合は、お知らせください。お役に立てれば!

于 2015-08-03T06:11:14.530 に答える
0

一般的な解決策は次のようになります

  1. 以下のように JavaScript で REST API を操作できることを確認します。(このステップでは、URL が要求した XML データを返すことを確認できます)

    http://portal/_api/web/lists/getByTitle('Equipments')/items/?$select=Title,ID&$filter=Room eq 'room1'
    
  2. SharePoint Designer で新しいカスタム DisplayForm を作成し、次の jQuery スクリプトを追加して、最後に以前にフェッチしたデータを読み取って生成します。

    <script src="/_layouts/15/CDN/Js/jquery-1.11.1.min.js" type="text/javascript" >  </script>
    
    <script type="text/javascript" >
    
    function LoadEquipments(roomValue) {
        $.ajax({
            url : _spPageContextInfo.webServerRelativeUrl + "/_api/web/lists/getByTitle('Equipments')/items/" +
            "?$select=Title,ID" +
            "&$filter=Room eq '" + roomValue + "'",
    
            type : "GET",
            headers : {
                "accept" : "application/json;odata=verbose",
            },
            success : function (data) {
    
                var equipments = [];
                var results = data.d.results;
                for (var i = 0; i < results.length; i++) {
    
                    if (equipments.indexOf(results[i].Title) < 0)
                        equipments.push(results[i].Title);
                }
    
                var ullist = $('<ul/>');
    
                for (var i = 0; i < equipments.length; i++)
                    $('<li/>').val(equipments[i]).html(equipments[i]).appendTo(ullist);
    
                ullist.appendTo('#divEquipements'); 
                $("#divEquipements ul li").css("font-size", "16px").css("color", "salmon");
    
            },
            error : function (err) {
                alert(JSON.stringify(err));
            }
        });
    }
    
    $(document).ready(function () { 
        var roomVal = $("#TitleValue").text(); 
        LoadEquipments(roomVal); 
    });
    
  3. 以前のコードが機能するようにするには、新しい td に id を追加して新しい要件 (たとえば、 id='divEquipements' の aa div を含む最後の行として新しい tr ) のデータを囲み、さらに id= を追加することをお勧めします。部屋のタイトルを含む td への 'TitleValue' (通常は最初の行)

于 2015-09-14T05:56:15.847 に答える