Crie dinamicamente uma GridView de um arquivo de classe (.cs)
-
27-09-2019 - |
Pergunta
Quero criar um formulário Gridview uma classe e enviar essa GridView como Mail. Conheço a peça de correspondência, mas como criar um GridView a partir de um arquivo de classe sem usar um arquivo ASPX.
Estou fazendo isso porque um método será chamado em um horário programado usando o quartz.net e esse método criará um GridView e o enviará como correio. Alguma sugestão de como isso pode ser feito?
EDITAR:
Este Gridview contém trabalhos diários para equipes (ou seja) Cada equipe tem um número de obras. Então, eu gero dinamicamente uma GridView dentro de um loop foreach. Como pode ser feito?
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);
}
...
}
Solução
Eu recomendaria a criação de uma tabela HTML usando StringBuilder em vez de criar GridView.
Aqui está uma postagem semelhante Converter datatable para tabela html
Outras dicas
Estou um pouco inseguro se eu entendi sua exigência corretamente, mas você pode criar uma GridView dinamicamente do código usando
Gridview myGrid = new GridView()
Contanto que você tenha referenciado o espaço de nome do sistema.web.ui dessa classe.
Além disso, o Gridview tem um método
public virtual void RenderControl(HtmlTextWriter writer)
que você pode usar para obter um htmltextwriter com as grades html que você pode passar para sua aula de e -mail
Sua edição - presumo que você queira criar conteúdo HTML ou GridView no método sendmail (), certo?
Nesse caso, você pode optar pelo seguinte método
- Crie uma página ASPX
- Coloque seu Gridview nele e vincule -o com o Datatable
- Crie objeto httpwebrequest e ligue para a página ASPX recém -criada
- Leia o conteúdo usando HttpwebroSponse
- Use este conteúdo para enviar e -mails.
Aqui estão alguns artigos que o ajudarão com httpwebrequest e httpwebesponse
Trabalhando com httpwebrequest e httpwebroponse em asp.net
Classe HTTPWEBRESPONSE
HTTPWEBREQUEST CLASSE