【发布时间】:2017-09-22 17:38:52
【问题描述】:
我有一个从工具箱 (VS2015) 中放入的 datagridview。我需要根据销售订单列选择相同的行并发送电子邮件:
所以;如果我根据唯一标识符(行项目)选择一行,我想查找具有相同销售订单号的所有行并通过电子邮件发送这些行中的信息。如您所见,可能有一个行没有匹配的销售订单,也可能有多个。我想要的是关于选择多个(相似)行的代码的建议以及关于如何在电子邮件中添加所有这些信息的建议。我有一些代码 sn-ps 来做一个单一的选择:
private void salesOrdersDataGridView_CellContentClick(object sender,
DataGridViewCellEventArgs e)
{
if (e.RowIndex > -1)
{
DataGridViewRow row = salesOrdersDataGridView.Rows[e.RowIndex];
string cpn = "";
cpn = salesOrdersDataGridView.Rows[e.RowIndex].Cells["cpn"].Value.ToString();
lblCpn.Text = cpn;
lblCpn.Visible = true;
string ordnum = "";
ordnum = salesOrdersDataGridView.Rows[e.RowIndex].Cells["SalesOrder"].Value.ToString();
lblOrder.Text = ordnum;
lblOrder.Visible = true;
string pnum = "";
pnum = salesOrdersDataGridView.Rows[e.RowIndex].Cells["partno"].Value.ToString();
lblPN.Text = pnum;
lblPN.Visible = true;
lblPN.ForeColor = Color.FromArgb(0, 192, 0);
string desc = "";
desc = salesOrdersDataGridView.Rows[e.RowIndex].Cells["descript"].Value.ToString();
lblDesc.Text = desc;
lblDesc.Visible = true;
string quant = "";
quant = salesOrdersDataGridView.Rows[e.RowIndex].Cells["qty"].Value.ToString();
lblQty.Text = quant;
lblQty.Visible = true;
string cpo = "";
cpo = salesOrdersDataGridView.Rows[e.RowIndex].Cells["cpo"].Value.ToString();
lblPO.Text = cpo;
lblPO.Visible = true;
string rev = "";
rev = salesOrdersDataGridView.Rows[e.RowIndex].Cells["crev"].Value.ToString();
lblRev.Text = rev;
lblRev.Visible = true;
lblRev.ForeColor = Color.FromArgb(0, 192, 0);
DateTime shp = DateTime.Parse(salesOrdersDataGridView.Rows[e.RowIndex].Cells["shipDate"].Value.ToString());
lblshp.Text = shp.ToString("MM/dd/yyyy");
lblshp.Visible = true;
string eml = "";
eml = salesOrdersDataGridView.Rows[e.RowIndex].Cells["email"].Value.ToString();
lblEmail.Text = eml;
lblEmail.Visible = true;
如您所见,我正在给标签写信(这样用户可以验证信息。然后我将其添加到电子邮件(Outlook):
private void btnAck_Click(object sender, EventArgs e)
{
try
{
//Must add Outlook Reference Object Library
Outlook.Application _app = new Outlook.Application();
Outlook.MailItem mail = (Outlook.MailItem)_app.CreateItem(Outlook.OlItemType.olMailItem);
mail.To = lblEmail.Text;
mail.BCC = ";work@somewhere.com";
mail.Subject = "Order Acknowledgement for your PO " + lblPO.Text;
mail.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
mail.HTMLBody = "<HTML><BODY>";
mail.HTMLBody += "Thank you for your order!" + "<br />" + "<br />" + "Touchstone Order Number: " + lblOrder.Text +
"<br />" + " Part Number: " + lblPN.Text + "<br />" + "Description:" + lblDesc.Text + "<br />" + "Customer Part Number: " + " " +
lblCpn.Text + "-" + " Revision: " + lblRev.Text + "<br />" + "Expected Ship Date: " + lblshp.Text +
"<br />" + "Quantity: " + lblQty.Text + "<br />" + "<br />" + "Regards," + "<br />" +
"<br />" + "Customer Service" + "<br />" + "Touchstone Technology, Inc." + "<br />" + "address." +
"<br />" + "more address" + "<br />" + "Phone: phone number";
mail.HTMLBody += "<p>Web: <a href='http://www.web'>web</a></p></body></html>";
mail.Display(true);
// mail.Send();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
我删除了我认为不必要的内容 - 请随时提出任何问题,因为我不确定如何澄清我需要的内容。感谢您通常的快速回复和帮助
【问题讨论】:
-
请使用Interpolated strings。 (在 c#6 中阅读起来更清晰)
标签: c# winforms datagridview