2010-10-21 3 views
2

cela peut être une question générale sur le partage des variables, mais ici va. J'utilise un GridView sur une page Web pour modifier chaque travail, et je dois me connecter à chaque événement 'rowbound' pour obtenir des données de jobDataMap.Obtenir le planificateur d'une autre méthode (Quartz.NET). Ou la question de méthode générale

Quoi qu'il en soit, le planificateur démarre dans la méthode Page_Load (créant la variable sched que je peux utiliser pour accéder aux informations), mais à partir de tout autre événement/méthode je ne peux pas accéder à la variable sched. Comment puis-je me permettre de faire cela?

Merci

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 
      if (e.Row.RowType != DataControlRowType.Header) 
      { 
       var schedulerFactory = new StdSchedulerFactory(); 
       IScheduler sched = schedulerFactory.GetScheduler(); 


       string schedID = sched.SchedulerInstanceId; 
       string id = e.Row.Cells[0].Text; 
       string groupid = e.Row.Cells[1].Text; 

       JobDetail jobDetail = sched.GetJobDetail(id, groupid); 
       Trigger[] trigger = sched.GetTriggersOfJob(id, groupid); 
       JobDataMap dataMap = jobDetail.JobDataMap; 

       e.Row.Cells[3].Text = dataMap.GetString("nameid"); 
      } 
        } 

Répondre

2

Vous pouvez utiliser le code suivant pour cela:

var schedulerFactory = new StdSchedulerFactory(); 
IScheduler scheduler = schedulerFactory.GetScheduler(); 

Si votre planificateur a un nom spécifique, il y a une surcharge de GetScheduler qui accepte un nom de chaîne.

Ou vous pouvez utiliser les éléments suivants:

IScheduler scheduler = 
    SchedulerRepository.Instance.Lookup("DefaultQuartzScheduler"); 
+0

ami Cheers, il me dit « Scheduler avec le nom « DefaultQuartzScheduler » existe déjà bien :( – Chris

+0

C'est bizarre, j'utilise les deux mêmes exactes lignes de code dans un projet et cela fonctionne.Mais j'ai ajouté une autre façon d'obtenir le même résultat –

+0

Maintenant, je reçois des erreurs de référence d'objet que je fais ... hmm.J'ai édité ma question avec le code que j'utilise, peut-être que je fais quelque chose de mal, j'essaie de faire une page ASP.NET où ils peuvent éditer les détails du travail dans le datamap – Chris

1
@see 
source StdSchedulerFactory.cs 

line 373 string schedName = cfg.GetStringProperty(PropertySchedulerInstanceName, "QuartzScheduler"); 

so IScheduler scheduler = 
    SchedulerRepository.Instance.Lookup("QuartzScheduler"); is default 
+0

quartz .net v2.3 – Pigwing

Questions connexes