Short answer is you can't do this without the help of some JavaScript.
There are a few steps you need to take to fulfill this, firstly you cannot add an extra "dropdown" as such to allow the user to select a Long List to filter by. However, what you can do is add some custom views to a lookup window. So your goal would be this: On the lookup form expand the "view" picklist. We can add custom views to this using JavaScript.
Firstly, let me give you an example of how to do this custom view part. For our example I have made the following presumptions:
- That your entities are called
new_member
, new_shortlist
and new_longlist
.
- For the purpose of this JavaScript function, I will just show you how we add this to a lookup field, but I expect you will want to hook this up to a button instead of a lookup field.
- Finally, the paramater you pass in will be a longlist entity you retrieved from CRM (using an ajax/odata call or similar). I will (possibly wrongly) presume that you already know how to do this.
The JavaScript to add a custom view will look something like this:
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);
}
This gets you part of the way. The missing piece is how about adding this to a button? That's a bit trickier. Thankfully I found another stackoverflow answer that should answer this for you:
How to add filtered view to Ribbon “Add Existing” button
Update from comments.
Some links on developer training and the sdk: