循环遍历datagrid中的行并获取变量C#

时间:2014-03-05 13:21:24

标签: c# loops datagridview outlook

好吧我有一个数据网格,它有一个按钮可以将数据导出到电子邮件中,它目前使用下面的代码创建一个新邮件,它会正确插入数据网格中显示的第一行但不插入任何其他行。 我假设我需要一个循环IE我的foreach语句(尽管是空的)需要在那里的东西,但我不能弄明白,已经卡住了几个小时)基本上我只是想循环显示从所述2列显示的所有行然后得到将它们放入变量中,然后使用它插入新邮件项目的主题体中......

Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.MailItem mailItem = (MailItem)app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);

foreach (DataGridViewRow rows in dataGridView2.SelectedRows)
{


}

var column1 = dataGridView2.Rows[0].Cells["dataGridViewTextBoxColumn2"].Value;
var column2 = dataGridView2.Rows[0].Cells["dataGridViewTextBoxColumn1"].Value;

mailItem.Body = column1.ToString() + " - " + column2.ToString();
mailItem.Subject = this.subjectText.Text;
mailItem.To = this.senderText.Text;

//mailItem.Attachment.Add(logPath);//logPath is a string holding path to the log.txt file
//mailItem.Importance = Microsoft.Office.Tools.Outlook.OlImportance.olImportanceHigh;
mailItem.Display(false);

2 个答案:

答案 0 :(得分:2)

首先,如果要显示每一行,则需要将dataGridView2.SelectedRows替换为dataGridView2.Rows,然后在每次迭代时只获取column1和column2的值:

object column1 = "";
object column2 = "";
foreach (DataGridViewRow row in dataGridView2.Rows)
{
    if(!item.IsNewRow)
    {
        column1 = item.Cells["dataGridViewTextBoxColumn1"].Value;
        column2 = item.Cells["dataGridViewTextBoxColumn2"].Value;
        mailItem.Body += column2 != null ? column2.ToString() : "" + " - " +
                         column1 != null ? column1.ToString() : "" + "\n";
}

答案 1 :(得分:0)

你可以这样做:

       StringBuilder builder = new StringBuilder();

        foreach (DataGridViewRow rows in dataGridView2.SelectedRows)
        {
            builder.AppendLine(
                ((rows.Cells["dataGridViewTextBoxColumn2"].Value == null) ? "" : rows.Cells["dataGridViewTextBoxColumn2"].Value.ToString()) +
                " - " +
            ((rows.Cells["dataGridViewTextBoxColumn1"].Value == null) ? "" : rows.Cells["dataGridViewTextBoxColumn1"].Value.ToString()));


        }

        mailItem.Body = builder.ToString();

另外,如果可能,请尝试使用列索引。