【问题标题】:The name `row` does not exist in the current context error [duplicate]当前上下文错误中不存在名称“行”[重复]
【发布时间】:2016-08-16 10:03:31
【问题描述】:

我想给动态用户发邮件,根据参数as

row["userName"].ToString()

我在我的代码中使用了上面这样的代码,

foreach (var row in group)
{
    sbodyMail += "<tr>" +
        "<td style='width: 100px; height: 14px;background-color:" + strcolorDet + "'>" + row["userName"].ToString() + " </td> " +
        "<td style='width: 100px; height: 14px;background-color:" + strcolorDet + "'>" + row["Doc_Type"].ToString() + " </td> " +
        "<td style='width: 100px; height: 14px;background-color:" + strcolorDet + "'>" + row["CountofDocNo"].ToString() + " </td> " +
        "</tr>";
}
sbodyMail += "</table><br>" + //close of header
"<b>THIS IS A SYSTEM GENERATED MAIL. PLEASE DO NOT REPLY </b>";
string strExp = "";
string startupPath = "";
List<string> ls_attach1 = new List<string>();
MailMessage mail = new MailMessage();
startupPath = Environment.CurrentDirectory;
strExp = "RAName = '" + group.Key + "'";
DataTable dtNew = ds.Tables[1].Select(strExp).CopyToDataTable();
DataSet dsNew = new DataSet();
dsNew.Tables.Add(dtNew);

ExcelLibrary.DataSetHelper.CreateWorkbook(startupPath + "\\Attachment\\Reminder_Sheet.xls", dsNew);
ls_attach1.Add(startupPath + "\\Attachment\\Reminder_Sheet.xls");
foreach (var attach in ls_attach1)
{
    mail.Attachments.Add(new Attachment(attach));
}

ce.SendEmail(row["userName"].ToString(), "", "", "Information on documents for processing", sbodyMail, "AUTOSQL", "Powersoft", ls_attach1, "ConnectionString");

但我得到错误:

名称row在当前上下文中不存在错误

【问题讨论】:

  • 您能否发布完整代码,以便我们大致了解您在做什么?
  • 由于row是在foreach (var row in group)中定义的,所以不能在循环外使用。
  • @ekad:那么我该如何使用它??任何其他方式
  • 将“foreach(var row in group)”更改为“foreach(var rowForEeach in group)”并相应地重命名。
  • 将所有扩孔代码放入foreach循环中。

标签: c# asp.net list email


【解决方案1】:

如果您的代码范围存在到最后,请尝试此操作。

foreach (var row in group)
{
    sbodyMail += "<tr>" +
        "<td style='width: 100px; height: 14px;background-color:" + strcolorDet + "'>" + row["userName"].ToString() + " </td> " +
        "<td style='width: 100px; height: 14px;background-color:" + strcolorDet + "'>" + row["Doc_Type"].ToString() + " </td> " +
        "<td style='width: 100px; height: 14px;background-color:" + strcolorDet + "'>" + row["CountofDocNo"].ToString() + " </td> " +
        "</tr>";

        sbodyMail += "</table><br>" + //close of header
        "<b>THIS IS A SYSTEM GENERATED MAIL. PLEASE DO NOT REPLY </b>";
        string strExp = "";
        string startupPath = "";
        List<string> ls_attach1 = new List<string>();
        MailMessage mail = new MailMessage();
        startupPath = Environment.CurrentDirectory;
        strExp = "RAName = '" + group.Key + "'";
        DataTable dtNew = ds.Tables[1].Select(strExp).CopyToDataTable();
        DataSet dsNew = new DataSet();
        dsNew.Tables.Add(dtNew);

        ExcelLibrary.DataSetHelper.CreateWorkbook(startupPath +     "\\Attachment\\Reminder_Sheet.xls", dsNew);
        ls_attach1.Add(startupPath + "\\Attachment\\Reminder_Sheet.xls");
        foreach (var attach in ls_attach1)
          {
            mail.Attachments.Add(new Attachment(attach));
          }

        ce.SendEmail(row["userName"].ToString(), "", "", "Information on documents for processing", sbodyMail, "AUTOSQL", "Powersoft", ls_attach1, "ConnectionString");
}

【讨论】:

  • 我应用了您的代码,但对于同一个用户,邮件发送两次。虽然它应该在一封电子邮件中包含所有数据..这里还需要设置一些分组row["RA1_Email"].ToString()
  • 使用断点进一步识别重复动作。
  • 我搞定了。谢谢:)
【解决方案2】:

如果你在这一行得到它:

ce.SendEmail(row["userName"].ToString(), "", "", "Information on documents for processing", sbodyMail, "AUTOSQL", "Powersoft", ls_attach1, "ConnectionString");

变量row只存在于foreach的范围内。在foreach 上的} 之后,您不再拥有row

【讨论】:

    【解决方案3】:

    我怀疑下面一行是导致错误的原因,因为rowforeach 块的本地,你不能在这个块之外访问。

    ce.SendEmail(row["userName"].ToString(), "", "", "信息 处理文件”, sbodyMail, “AUTOSQL”, “Powersoft”, ls_attach1, "连接字符串");

    【讨论】:

    • 谢谢hari,我知道那是错误。那我应该怎么写才能让它可用呢?
    • 你是决定foreach循环范围的最佳人选。查看您的代码,我认为您可以将 foreach 块扩展到最后一行。这意味着删除开头的} 右大括号并将其放在末尾。
    • 我可以像这样使用它吗dt.Rows[0]["RA1_Email"].ToString() 因为我有发件人的 id 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2010-12-17
    • 2019-01-16
    • 1970-01-01
    相关资源
    最近更新 更多