0

要件:DBにクエリを実行し、データグリッドとグラフを作成し、このレポート/情報を電子メールで送信する自動化されたプロセス。

問題:埋め込み画像(グラフ)またはデータグリッドのいずれかを使用してレポートを作成できますが、一緒に作成することはできません。メールでグラフとデータグリッドの両方を取得するにはどうすればよいですか?

コード:

            MailMessage m = new MailMessage();
            SmtpClient smtp = new SmtpClient("smtpservername", 25);
            m.From = new System.Net.Mail.MailAddress("vananthraman@abcd.com");
            m.To.Add("vananthraman@abcd.com");
            m.Subject = "This is a test";

            AlternateView plainView = AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable by those clients that don't support html", null, "text/plain");

            AlternateView htmlView = AlternateView.CreateAlternateViewFromString("<img src=cid:companylogo>", null, "text/html");



            System.Net.Mail.LinkedResource logo = new System.Net.Mail.LinkedResource(path);
            logo.ContentId = "companylogo";

            htmlView.LinkedResources.Add(logo);

            m.AlternateViews.Add(plainView);
            m.AlternateViews.Add(htmlView);



            //some_query is defined here
                    using (SqlCommand cmd = new SqlCommand(some_query, connection))
                    {


                        GridView gvwBmonitor = new GridView();
                        SqlDataReader reader = cmd.ExecuteReader();
                        gvwBmonitor.DataSource = reader;
                        gvwBmonitor.DataBind();


                        m.IsBodyHtml = true;
                        StringBuilder sb = new StringBuilder();
                        HtmlTextWriter hw = new HtmlTextWriter(new StringWriter(sb));
                        gvwBookingmonitor.RenderControl(hw);

                        m.Body = m.Body + sb.ToString();
                        AlternateView htmlView2 = AlternateView.CreateAlternateViewFromString(sb.ToString(), null, "text/html");
                        m.AlternateViews.Add(htmlView2);
                        smtp.Send(m);

                    }

グラフのみが表示され、グリッドは表示されません。どうすればこれを修正できますか?

4

1 に答える 1