2016-09-28 25 views
2

添加設置計劃作業,我需要補充的是可以用來改變Episerver計劃作業的行爲的複選框:如何Episerver

public class ImportAlarms : ScheduledJobBase 
    { 
     /*I want the editor to set this*/ 
     public bool CheckBox { get; set; } 

     public override string Execute() 
     { 
      OnStatusChanged("Starting execution of import alarms"); 

      var status = Import(); 

      return status; 
     } 

     private static string Import() 
     { 
      /*Do something with CheckBox value here*/ 

      var repository = ServiceLocator.Current.GetInstance<IContentRepository>(); 

      var alarms = ImportAlarmsProvider.Import(DateTime.Now.AddDays(-1), DateTime.Now.AddDays(1)); 

      var createdCount = new AlarmRepository(repository).ImportAlarms(alarms.OrderBy(x => x.Date)); 

      return createdCount == -1 ? "No alarm container page set" : string.Format("Import completed, {0} pages imported", createdCount); 
     } 
    } 

I want one more checkbox like the Active checkbox that is there by default.

我想多一個複選框,如活動複選框,默認情況下。

回答

1

我喜歡andreasnico提出的解決方案,但一個簡單的方法可能是使用插件設置(儘管它們與用戶界面中的預定作業分開管理)。從https://www.epinova.no/en/blog/configuration-options-for-episerver-sites/插件設置的

例子:

using EPiServer.PlugIn; 

[GuiPlugIn(Area = PlugInArea.None, DisplayName = "My Plugin Settings")] 
public class MyPluginSettings 
{ 
    private static MyPluginSettings _instance; 

    [PlugInProperty(Description = "Some setting", AdminControl = typeof(CheckBox), AdminControlValue = "Checked")] 
    public bool SomeSetting { get; set; } 

    public MyPluginSettings() 
    { 
     PlugInSettings.SettingsChanged += new EventHandler(PlugInSettings_SettingsChanged); 
    } 

    private static void PlugInSettings_SettingsChanged(object sender, EventArgs e) 
    { 
     _instance = null; 
    } 

    public static MyPluginSettings Instance 
    { 
     get 
     { 
      if (_instance == null) 
      { 
       _instance = new MyPluginSettings(); 
      } 

      PlugInSettings.AutoPopulate(_instance); 

      return _instance; 
     } 
    } 
} 

你可以在你的計劃作業這樣的代碼檢索值:

bool setting = MyPluginSettings.Instance.SomeSetting; 
+1

謝謝泰德,但這不是一個尋找,但我可以看到很多好用的這個,我實際上實現它的東西:) – Dujskan

1

這可能是最大的限制,當談到Episervers計劃工作...缺乏配置選項。例如,人們無法向他們發送任何參數,也無法選擇不同的時間在一天內完成任務。

最簡單的選擇是從appSettings.config或從數據庫設置作業中需要的值。

否則我會構建一個GuiPlugin。這些通常顯示在管理員工具下的預定作業上方(如果您選擇將其放置在該區域中)。您的設置可以按Ted描述的方式保存,也可以將它們保存在數據庫中或使用Episervers DDS(http://world.episerver.com/documentation/Items/Developers-Guide/Episerver-Framework/7/Dynamic-Data-Store/Dynamic-Data-Store/)。

您也可以將設置存儲在StartPage或SettingsPage或您選擇的任何設置上,但是我不能完全確定這些會在計劃而不是手動運行作業時解決。

+0

我會保持這個記住,直到下一次:) – Dujskan