private void btnDeleteJob_Click(object sender, EventArgs e) { TreeNode selectedNode = jobGroupsTreeView.SelectedNode; if (selectedNode is JobNode) { JobNode node = (JobNode)jobGroupsTreeView.SelectedNode; _schedulerProvider.Scheduler.DeleteJob(node.Detail.Key); jobGroupsTreeView.SelectedNode.Remove(); loadRunningJobs(); } var triggerNode = selectedNode as TriggerNode; if (triggerNode != null) { _schedulerProvider.Scheduler.UnscheduleJob(triggerNode.Trigger.Key); } }
private void addJobNodes(TreeNode jobsNode) { string group = jobsNode.Parent.Text; var groupMatcher = GroupMatcher <JobKey> .GroupEquals(group); var jobKeys = _schedulerProvider.Scheduler.GetJobKeys(groupMatcher); foreach (var jobKey in jobKeys) { try { IJobDetail detail = _schedulerProvider.Scheduler.GetJobDetail(jobKey); JobNode jobNode = new JobNode(detail); jobsNode.Nodes.Add(jobNode); addTriggerNodes(jobNode); } catch (Exception ex) { jobsNode.Nodes.Add(string.Format("Unknown Job Type ({0})", jobKey.Name)); } } }
private void btnRunJobNow_Click(object sender, EventArgs e) { JobNode node = (JobNode)jobGroupsTreeView.SelectedNode; _schedulerProvider.Scheduler.TriggerJob(node.Detail.Key); }
void jobGroupsTreeView_AfterSelect(object sender, TreeViewEventArgs e) { ListView lv = new ListView(); lv.Items.Clear(); jobDetailsToggle(false); if (e.Node is SchedulerNode) { pnlDetails.Controls.Add(new ScheduleDisplay(_schedulerDataProvider.Data)); } if (e.Node is TriggerNode || e.Node is JobNode) { btnDeleteJob.Enabled = true; } else { btnDeleteJob.Enabled = false; } if (e.Node is JobNode) { JobNode jobNode = (JobNode)e.Node; var jobDetailsData = _schedulerDataProvider.GetJobDetailsData(e.Node.Text, e.Node.Parent.Parent.Text); btnRunJobNow.Enabled = true; pnlDetails.Controls.Add(new NativeJobDetailDisplay(jobDetailsData)); } else { btnRunJobNow.Enabled = false; } if (e.Node is TriggerNode) { TriggerNode node = (TriggerNode)e.Node; var triggerData = _schedulerDataProvider.GetTriggerData(node.Trigger.Key); btnPause.Enabled = true; setPauseButtonText(); if (triggerData.TriggerType.Code == "cron") { pnlDetails.Controls.Add(new CronTriggerDisplay(triggerData)); } if (triggerData.TriggerType.Code == "simple") { pnlDetails.Controls.Add(new SimpleTriggerDisplay(triggerData)); } btnEdit.Enabled = true; } else { btnEdit.Enabled = false; btnPause.Enabled = false; } #region 當選擇JobGroup子節點時自動過濾出List列表內容 if (e.Node.Parent != null && e.Node.Parent.Text == "Job Groups") { ListViewItem searchItem = null; int index = 0; List <int> listIndex = new List <int>(); List <int> temp = new List <int>(); for (int i = 0; i < listView_RunningJobs.Items.Count; i++) { temp.Add(i); } do { if (index < listView_RunningJobs.Items.Count) { searchItem = listView_RunningJobs.FindItemWithText(e.Node.Text, true, index, false); if (searchItem != null) { index = searchItem.Index + 1; listIndex.Add(index); searchItem.BackColor = Color.Coral; if (temp.Exists(m => m == index - 1)) { temp.Remove(index - 1); } } } else { searchItem = null; } } while (searchItem != null); for (int i = 0; i < temp.Count; i++) { ListViewItem item = listView_RunningJobs.Items[temp[i]]; item.BackColor = Color.Empty; } } else { for (int i = 0; i < listView_RunningJobs.Items.Count; i++) { ListViewItem item = listView_RunningJobs.Items[i]; item.BackColor = Color.Empty; } } #endregion jobDetailsToggle(true); }