Actions och klickhanterare

Ett antal kontroller, som t ex poster i menyer, formulärknappar och knappar i verktygsfält är "klickbara", dvs något ska hända när användaren klickar på dem. Detta kan vara t ex:

  • Köra kod på klienten

  • Köra kod på servern

  • Öppna en dialog, vänta på inmatning och sedan köra server-kod när dialogen har stängts

  • Navigera till en länk

Dynamix unifierar dessa varianter i interfacet Dynamix.Ui5.Controls.IClickAction som implementeras av Dynamix.Ui5.Controls.JsAction och Dynamix.Ui5.Controls.LinkAction och deras subklasser enligt:

ClientClickAction

Denna typ används för att köra kod på klienten:

  1. C#
  1. var myButton = new ToolbarButton
  2. {
  3. Icons = Icons.GetStandard( "paste" ),
  4. Text = "Klistra in",
  5. Action = new ClientClickAction( "alert('Klistra in')" )
  6. };

ClickAction

Denna typ kör kod på servern:

  1. C#
  1. var myButton = new ToolbarButton
  2. {
  3. Icons = Icons.GetStandard( "paste" ),
  4. Text = "Klistra in",
  5. Action = new ClickAction( myButton_ClickHandler )
  6. };
  7. private void myButton_ClickHandler( ClickAction sender, Object contextobject, string clientinfo )
  8. {
  9. }

DialogAction

Används för att öppna en dialog eller ett fönster av "verktygstyp", dvs en dialog där man inte vill eller behöver göra något speicell då den stängs. Exempelvis för att öppna en dialog som hanterar webbplatsens nyheter:

  1. C#
  1. var info = new ManageObjectsDialogInfo { WindowName = "News" };
  2. info.Parameters.DialogCustomizerType = typeof( NewsDialogCustomizer );
  3. info.Parameters.Title = "Nyheter";
  4. var myButton = new ToolbarButton
  5. {
  6. Text = "Nyheter",
  7. Icons = Icons.GetStandard( "newspaper" ),
  8. Action = new DialogAction( info )
  9. };

OkCancelDialogAction

Denna typ används för att öppna dialoger där man vill köra kod när/om användaren klickar på Ok, t ex för att spara de värden som har angivits i dialogen.

  1. C#
  1. var editSettingsInfo = new EditObjectDialogInfo();
  2. editSettingsInfo.Parameters.CurrentObject = MySite.Settings.Instance;
  3. var editSettingsAction = new OkCancelDialogAction( editSettingsInfo );
  4. var myButton = new ToolbarButton
  5. {
  6. Icons = Icons.GetStandard( "edit" ),
  7. Text = "Inställningar",
  8. Action = editSettingsAction
  9. };
  10. editSettingsAction.DialogOk += editSettingsAction_DialogOk;
  11. ...
  12. void editSettingsAction_DialogOk( DialogParameters returnValues, DialogParameters inParameters )
  13. {
  14. ((MySite.Settings)returnValues.CurrentObject).DB_Save();
  15. }