2013-09-27 32 views
1

我有3個實體,如Member,LongList和ShortList。這兩個列表與成員實體都有多對多的關係。我將成員添加到LongLists中,並且可以將成員添加到多個LongLists中。CRM Dynamics如何在用戶端過濾視圖

用戶將從他/她將選擇的長列表的成員中創建短列表。我可以根據成員的特定LongList創建視圖,但我不能在用戶端進行此選擇,我只能爲創建的每個LongList創建不同的視圖,這不是一個好的情況,因爲LongLists也是由用戶創建。

有沒有辦法讓用戶決定他/她會看到哪個List的成員?它必須像下拉菜單一樣選擇「長列表」視圖和另一個下拉列表來選擇哪個長列表。

+0

一個相當困難的問題理解,但我猜你想這是什麼?你有不同成員的'N'LongLists。你打開一個短名單記錄。您可以選擇成員列表(在左側導航欄或子網格上)。然後點擊添加新成員...在這裏,您希望顯示的查找表單爲您提供選擇要過濾的長列表的選項? –

+0

是的,這是那種。我希望用戶從他可以選擇的長列表中選擇成員。 –

回答

1

簡短的答案是你不能沒有一些JavaScript的幫助下做到這一點。

您需要執行幾個步驟來完成此任務,首先您不能添加額外的「下拉列表」,以允許用戶選擇要過濾的長列表。但是,您可以做的是將一些自定義視圖添加到查找窗口。所以你的目標是這樣的:在查找表單上展開「視圖」選擇列表。我們可以使用JavaScript爲其添加自定義視圖。

首先,讓我給你一個如何做這個自定義視圖部分的例子。在我們的例子中,我做了如下推定:

  • 那你的實體稱爲new_membernew_shortlistnew_longlist
  • 爲了這個JavaScript函數的目的,我將向您展示如何將其添加到查找字段中,但我希望您希望將其掛鉤到按鈕而不是查找字段。
  • 最後,您通過的參數將成爲您從CRM中檢索的一個longlist實體(使用ajax/odata調用或類似方法)。我會(可能錯誤地)認爲你已經知道如何做到這一點。

的JavaScript來添加自定義視圖將是這個樣子:

function addCustomLonglistView(longlist) { 
    // Create a view id and a view name 
    var viewId = "{A2D479C5-53E3-4C69-ADDD-802327E67A0D}"; 
    var viewDisplayName = longlist.New_Name + " members"; 

    // Prepare the fetch xml for the lookup view 
    var fetchXml = 
     '<fetch mapping="logical" count="250" version="1.0">' + 
      '<entity name="new_member">' + 
       '<attribute name="new_memberid" />' + 
       '<attribute name="new_name" />' + 
       '<link-entity name="new_longlist" from="new_memberid" to="new_memberid">' + 
        '<filter>' + 
         '<condition attribute="new_longlistid" operator="eq" value="' + longlist.Id + '" />' + 
        '</filter>' + 
       '</link-entity>' + 
      '</entity>' + 
     '</fetch>'; 
    var layoutXml = '<grid name="resultset" object="1" jump="new_name" select="1" icon="1" preview="1"><row name="result" id="new_memberid"><cell name="new_name" width="300" /></row></grid>'; 

    Xrm.Page.getControl("new_memberfield").addCustomView(viewId, "new_member", viewDisplayName, fetchXml, layoutXml, true); 
    Xrm.Page.getControl("new_memberfield").setDefaultView(viewId); 
} 

這可以讓你的方式的一部分。缺失的部分是如何將此添加到按鈕?這有點棘手。值得慶幸的是我發現了另一個計算器答案應該回答這個問題對你的意見:

How to add filtered view to Ribbon 「Add Existing」 button

更新。

對開發人員培訓和SDK的某些鏈接:

+0

謝謝你的回答Conor。我從來沒有使用過其他語言的CRM,所以我不知道如何使用AJAX傳遞數據或者喜歡它;但我會學習它。問題是我甚至不知道在哪裏編寫代碼。我對這款Dynamics CRM產品非常感興趣,我只是按照我的要求去做。現在(據我所知),項目中沒有.NET部分。只要我找出在哪裏編寫代碼,我會嘗試你的答案。再次感謝。 –

+1

它主要是將JavaScript添加到引發某些表單事件的表單中。我的建議是查看CRM開發人員培訓工具包,並查看SDK:http://www.microsoft.com/en-us/download/details.aspx?id=23416,http:// msdn。 microsoft.com/en-us/library/gg309637.aspx。我也將這些添加到答案中。 –

+0

再次感謝Conor。我會檢查出來的。 –

相關問題