Crea dinamicamente una visualizzazione griglia da un file class(.cs).
-
27-09-2019 - |
Domanda
Voglio creare un gridview da una classe e inviarlo come posta.Conosco la parte di mailing, ma come creare una gridview da un file di classe senza utilizzare un file aspx.
Lo sto facendo perché un metodo verrà chiamato a un orario programmato utilizzando quartz.net e quel metodo creerà una gridview e la invierà come posta.Qualche suggerimento su come si può fare?
MODIFICARE:
Questa visualizzazione a griglia contiene i lavori giornalieri per i pentagrammi (vale a dire) ogni pentagramma ha un numero 'n' di lavori.Quindi ho generato dinamicamente una visualizzazione a griglia all'interno di un ciclo foreach.Come si può fare?
using Quartz;
public class SendMailJob : IJob
{
public void Execute(JobExecutionContext context)
{
SendMail();
}
private void SendMail()
{
// put your send mail logic here
}
}
e global.asax,
using Quartz;
using Quartz.Impl;
public class Global : System.Web.HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
ISchedulerFactory schedFact = new StdSchedulerFactory();
// get a scheduler
IScheduler sched = schedFact.GetScheduler();
sched.Start();
// construct job info
JobDetail jobDetail = new JobDetail("mySendMailJob", typeof(SendMailJob));
// fire every day at 06:00
Trigger trigger = TriggerUtils.MakeDailyTrigger(06, 00);
trigger.Name = "mySendMailTrigger";
// schedule the job for execution
sched.ScheduleJob(jobDetail, trigger);
}
...
}
Soluzione
mi sento di raccomandare la creazione di una tabella HTML usando StringBuilder anziché creare GridView.
Ecco un post simile Convertire DataTable alla tabella HTML
Altri suggerimenti
sono un po 'incerto se ho capito la vostra esigenza in modo corretto, ma è possibile creare un GridView dinamicamente dal codice usando
Gridview myGrid = new GridView()
finché si è fatto riferimento allo spazio dei nomi System.Web.UI da quella classe.
Inoltre, il GridView ha un metodo
public virtual void RenderControl(HtmlTextWriter writer)
che può essere utilizzato per ottenere un HtmlTextWriter con le griglie HTML che è quindi possibile passare alla classe email
Dalla tua modifica: presumo che tu voglia creare contenuto html o gridview nel metodo SendMail(), giusto?
in tal caso, puoi optare per il seguente metodo
- Creare una pagina ASPX
- inserisci la tua gridview e collegala con datatable
- Crea un oggetto httpWebrequest e chiama la pagina aspx appena creata
- leggere il contenuto utilizzando HttpWebResponse
- utilizzare questo contenuto per inviare posta.
ecco alcuni articoli che ti aiuteranno con httpwebrequest e httpwebresponse
Utilizzo di HttpWebRequest e HttpWebResponse in ASP.NET
Classe HttpWebResponse
Classe HttpWebRequest