从类(.cs)文件动态创建gridview

时间:2010-08-11 10:54:56

标签: c# asp.net gridview dynamic .class-file

我想创建一个类的gridview表单并将该gridview作为邮件发送。我知道邮件部分,但如何在不使用aspx文件的情况下从类文件创建gridview。

我这样做是因为将使用quartz.net在预定时间调用方法,该方法将创建gridview并将其作为邮件发送。有什么建议可以做到吗?

修改
这个gridview包含员工的日常工作(即)每个员工都有'n'个作品。所以我在foreach循环中动态生成gridview。怎么做?

using Quartz;
public class SendMailJob : IJob
{
    public void Execute(JobExecutionContext context)
    {
        SendMail();
    }
    private void SendMail()
    {
        // put your send mail logic here
    }
}

和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);
    }
    ...
}

3 个答案:

答案 0 :(得分:2)

我建议使用StringBuilder创建一个html表,而不是创建GridView。

以下是类似的帖子Convert DataTable to HTML Table

答案 1 :(得分:0)

有点不确定我是否正确理解了您的要求,但您可以使用

从代码中动态创建gridview
Gridview myGrid = new GridView() 

只要您从该类引用了System.Web.UI命名空间。

此外,GridView还有一个方法

    public virtual void RenderControl(HtmlTextWriter writer)

您可以使用它来获取带有网格HTML的HTMLTextWriter,然后将其传递给您的电子邮件类

答案 2 :(得分:0)

从你编辑 - 我假设你想在SendMail()方法中创建html内容或gridview,对吗?

如果是这样,您可以选择以下方法

  • 创建一个aspx页面
  • 将您的gridview放入其中并使用datatable
  • 绑定它
  • 创建httpWebrequest对象并调用新创建的aspx页面
  • 使用HttpWebResponse
  • 阅读内容
  • 使用此内容发送邮件。

这里有一些文章可以帮助你使用httpwebrequest和httpwebresponse

Working with HttpWebRequest and HttpWebResponse in ASP.NET
HttpWebResponse Class
HttpWebRequest Class