In D365FO, you can create an ItemId lookup for an unbounded control using SysTableLookup without requiring any datasource binding.
The key is to pass the control (sender) directly to SysTableLookup::newParameters() and define the required lookup fields and query.
[FormControlEventHandler(formControlStr(PurchCreateFromSalesOrder, MarkupItemId),
FormControlEventType::Lookup)]
public static void MarkupItemId_OnLookup(FormControl sender, FormControlEventArgs e)
{
SysTableLookup sysTableLookup;
Query query;
QueryBuildDataSource qbds;
sysTableLookup = SysTableLookup::newParameters(tableNum(InventTable), sender);
sysTableLookup.addLookupfield(fieldNum(InventTable, ItemId));
sysTableLookup.addLookupfield(fieldNum(InventTable, NameAlias));
query = new Query();
qbds = query.addDataSource(tableNum(InventTable));
// Optional filter
// qbds.addRange(fieldNum(InventTable, ItemType))
// .value(queryValue(ItemType::Item));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}
Key Point
For an unbounded control, pass sender to SysTableLookup::newParameters(). No datasource binding is required.

Like
Report
*This post is locked for comments