通过邮件发送datalist的问题 [英] problem in sending datalist via mail

查看:72
本文介绍了通过邮件发送datalist的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好..



i正在做一个小网页,其中..i想要将datalist发送到邮件..



但是当我发送邮件时有一些问题。所有数据都会发送到适当但不是数据列表..



请帮助我。



plz使用微软的Northwind数据库..

hello..

i am doing small web page in which ..i want to send datalist to the mail..

but there are some problems when i send mail..all data will send appropriately but not datalist ..

plz help me.

plz use Northwind database of microsoft..

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body style = "font-family:Arial; font-size:10pt">
<form id="form1" runat="server">
<asp:DataList ID="dlContacts" runat="server" RepeatLayout="Table" RepeatColumns="3"

    CellPadding="2" CellSpacing="2">
    <ItemTemplate>
        <table cellpadding="2" cellspacing="0" border = "1" style="width: 200px; height: 100px; border: dashed 2px #04AFEF;background-color: #B0E2F5">
            <tr>
                <td><asp:CheckBox ID="CheckBox1" runat="server" />
                <b><u><%# Eval("ContactName") %></u></b></td>
            </tr>
            <tr>
                <td>
                    <b>City: </b><%# Eval("City") %><br />
                    <b>Postal Code: </b><%# Eval("PostalCode") %><br />
                    <b>Country: </b><%# Eval("Country")%><br />
                    <b>Phone: </b><%# Eval("Phone")%><br />
                    <b>Fax: </b><%# Eval("Fax")%><br />
                </td>
            </tr>
        </table>
    </ItemTemplate>
</asp:DataList>
<br />
<asp:Button ID="btnPrint" runat="server" Text="Print" OnClick = "Print" />
</form>
</body>
</html>




using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Text;
using System.IO;

using System.Net.Mail;

public partial class CS : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        dlContacts.DataSource = this.GetData();
        dlContacts.DataBind();
    }
}

private DataTable GetData()
{
    string conString = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
    using (SqlConnection con = new SqlConnection(conString))
    {
        using (SqlCommand cmd = new SqlCommand("select top 6 * from customers"))
        {
            cmd.Connection = con;
            cmd.CommandType = CommandType.Text;
            using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
            {
                DataSet ds = new DataSet();
                sda.Fill(ds);
                return ds.Tables[0];
            }
        }
    }
}
    protected void Print(object sender, EventArgs e)
    {
        DataTable dt = GetData();
        List<datarow> rows = new List<datarow>();
        foreach (DataListItem item in dlContacts.Items)
        {
            if (!(item.FindControl("CheckBox1") as CheckBox).Checked)
            {
                rows.Add(dt.Rows[item.ItemIndex]);
            }
        }
        foreach (DataRow row in rows)
        {
            dt.Rows.Remove(row);
        }
        dlContacts.DataSource = dt;
        dlContacts.DataBind();
        foreach (DataListItem item in dlContacts.Items)
        {
            item.FindControl("CheckBox1").Visible = false;
        }

        SendHTMLMail();
        
    }

    public void SendHTMLMail()
    {
        MailMessage Msg = new MailMessage();
        SmtpClient Smtp;
        MailAddress fromMail = new MailAddress("xyz@com");

        // Sender e-mail address.
        Msg.From = fromMail;
        // Recipient e-mail address.

        Msg.To.Add(new MailAddress("xyz@com"));
        // Subject of e-mail
        Msg.Subject = "Datalist Test";
        Msg.Body += "Please check below data <br /><br />";
        Msg.Body += GetDatalistData(dlContacts);
        
        Msg.IsBodyHtml = true;

        Msg.Priority = MailPriority.High;

        Smtp = new SmtpClient("");
        Smtp.Credentials = new System.Net.NetworkCredential("", "");
        Smtp.Port = 587;
        Smtp.Host = "mail.mwcspune.com";
        Smtp.Send(Msg);
    }

    public string GetDatalistData(DataList dt)
    {
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        dt.RenderControl(hw);
        string html = sw.ToString().Replace("\"", "'").Replace(System.Environment.NewLine, "");
        StringBuilder sb = new StringBuilder();
        sb.Append("<script type = 'text/javascript'>");
        sb.Append("window.onload = new function(){");
        sb.Append("var printWin = window.open('', '', 'left=0");
        sb.Append(",top=0,width=1000,height=600,status=0');");
        sb.Append("printWin.document.write(\"");
        sb.Append(html);
        sb.Append("\");");
        sb.Append("printWin.document.close();");
        sb.Append("printWin.focus();");
        sb.Append("printWin.print();printWin.opener.location.href=printWin.opener.location.href;");
        sb.Append("printWin.close();};");
        sb.Append("</script>");
        ClientScript.RegisterStartupScript(this.GetType(), "GridPrint", sb.ToString());
        return sb.ToString();
    }
    public override void VerifyRenderingInServerForm(Control control)
    {
        /* Verifies that the control is rendered */
    }
}

推荐答案

使用此方法



Use this method

public static string RenderControl(Control ctrl)
    {
        StringBuilder sb = new StringBuilder();
        StringWriter tw = new StringWriter(sb);
        HtmlTextWriter hw = new HtmlTextWriter(tw);
        ctrl.RenderControl(hw);
        return sb.ToString();
    }





和通话功能为



and call function as

Msg.Body += RenderControl(datalist1);



希望它能解决您的问题。


Hope it will resolve your problem.


这篇关于通过邮件发送datalist的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆