Not so trivial after all. I played around a bit and here is what I came up with:
Notes first:
- You will need jQuery (at least on the DispForm.aspx of the Training Calendar list and on the NewForm.aspx of the Registration list)
- You Registration list needs a lookup column to the Training Calendar list
- You will have to deactivate Minimal Download Stratgy on the site, otherwise the scripts might not run
Steps
1. Your column Register will be empty by default. Add the following
CSR to the view:
Type.registerNamespace('SPOODOO')
SPOODOO.Demos = SPOODOO.Demos || {};
SPOODOO.Demos.Templates = SPOODOO.Demos.Templates || {}
SPOODOO.Demos.Functions = SPOODOO.Demos.Functions || {}
SPOODOO.Demos.Functions.DisplayRegisterLink = function (ctx) {
return "<a href='/Lists/Registration/NewForm.aspx?event=" + ctx.CurrentItem["ID"] + "'>Register</a>"
}
SPOODOO.Demos.Templates.Fields = {
'Register': {
'View': SPOODOO.Demos.Functions.DisplayRegisterLink
}
}
SPOODOO.Demos.Functions.RegisterField = function () {
SPClientTemplates.TemplateManager.RegisterTemplateOverrides(SPOODOO.Demos)
}
SPOODOO.Demos.Functions.MdsRegisterField = function () {
var thisUrl = _spPageContextInfo.siteServerRelativeUrl + "Style Library/register.js";
SPOODOO.Demos.Functions.RegisterField();
RegisterModuleInit(thisUrl, SPOODOO.Demos.Functions.RegisterField)
}
if (typeof _spPageContextInfo != "undefined" && _spPageContextInfo != null) {
SPOODOO.Demos.Functions.MdsRegisterField()
} else {
SPOODOO.Demos.Functions.RegisterField()
}
Sorry about all the SPOODOOs, you can change them to whatever Namespace you prefer. In order to add the CSR, put all that code in a *.js-file. Upload it to somewhere (Style Library for example). Then change the JSLINK-property of the view to something like:
~SiteCollection/Style Library/CSR.js
In the code you will find two URLs. You will have to change them to the proper paths. The upper one is the relative path to the registration list (change /Lists/Registration/NewForm.aspx to the proper URL), the lower one to the relative path to the CSR file without the leading '/'.
Here you can find more CSR related information:
http://www.codeproject.com/Articles/620110/SharePoint-Client-Side-Rendering-List-Views
2. Modify the DispForm.aspx of your Training Calendar list
Open any existing item and then Edit the Page. Add a Script Editor Webpart and add the following code:
<script>
JSRequest.EnsureSetup();
var custom = JSRequest.QueryString["custom"];
if(typeof custom != "undefined"){
jQuery("#s4-ribbonrow").hide()
jQuery("#part1 > *:last-child()").hide()
jQuery("#pageTitle").hide()
}
</script>
This should be the result:

Save the page and continue with step 3
3. Modify the NewForm.aspx of your Registration list
Click New Item on the Registration list, then edit the page.
Add a Page Viewer Webpart and define the URL as the URL of the DispForm.aspx of your Training Calendar list. Add ?ID=0 to it. It should look like that:
/Lists/TrainingCalendar/DispForm.aspx?ID=0
Now add another Script Editor Webpart and add the following code:
<script>
jQuery(document).ready(function(){
JSRequest.EnsureSetup();
var eventId = JSRequest.QueryString["event"];
var eventLookUpField = jQuery("[id^=Event_][id$='_$LookupField']")
var eventIFrame = jQuery("#MSOPageViewerWebPart_WebPartWPQ3")
if(typeof eventId != "undefined"){
eventLookUpField.val(eventId)
eventLookUpField.closest("tr").hide()
eventIFrame.attr("src","/Lists/Events/DispForm.aspx?isDlg=1&custom=1&ID=" + eventId)
} else {
eventLookUpField.on("change", function(e){
eventId = eventLookUpField.val()
eventIFrame.attr("src","/Lists/Events/DispForm.aspx?isDlg=1&custom=1&ID=" + eventId)
})
}
})
</script>
Here ,again, you might have to change the URLs so that point to your Training Calendar list. You will also have to replace Event in this line to whatever the name of your lookup column is:
var eventLookUpField = jQuery("[id^=Event_][id$='_$LookupField']")
And this line might need a change as well:
jQuery("#MSOPageViewerWebPart_WebPartWPQ3")
Depending on the order you choose to add the webparts, the number at the end could be different (2, 3, 4). You can figure that out with your browsers Dev-tools.
And that's the result:

Save the page and you should have your expected result.
Few example shots
The Training Calendar list (called Events in my case):

The Registration-list NewForm.aspx when the normal New Item button was used and an event has been selected from the drop down (in that case the Event-selection drop down menu is visible):
The Registration-list NewForm.aspx when the Register button was used (in that case the Event-selection drop down is invisible):
