所以,
\n在我的 WPF 应用程序中,我希望我的用户能够打开发票预览,以便他们可以验证或丢弃它们。DataGridCheckBoxColumn我让他们检查我的a 中的行(每一行代表一张发票)DataGrid,然后单击一个按钮(运行我的CreateInvoicePreview()方法,请参阅帖子底部),让所有发票预览在新窗口中打开(每个发票一个窗口)发票)。
嗯.. 现在发生的事情是:用户检查 InvoiceA 和 InvoiceB。开具了两张发票,但它们是相同的:InvoiceC。始终会开立正确数量的发票,但不会开立正确的实例。如果我打开文件路径中指定的临时文件夹,我会看到数据网格中的所有发票均已保存:InvoiceA 到 InvoiceJ。
\n让我带您浏览一下代码。
\n这是创建并保存实际 PDF 的方法,WebView2控件将其用作源,以便可以在应用程序中显示它们。它被大量缩写。\n我保留了嵌套的结构,foreach loops以防相关。
public void CreatePreviewInvoice() {\n\n /* SQL SERVER CODE\n * SQL SERVER CODE\n * SQL SERVER CODE */\n\n List<PaidTrip> paidTrips = PaidTrips.ToList();\n\n tripsGroupedByCompany = paidTrips.GroupBy(pt => pt.LicenseHolderID);\n\n foreach (IGrouping<string, PaidTrip> companyGroup in tripsGroupedByCompany) {\n\n /* SQL SERVER CODE\n * SQL SERVER CODE\n * SQL SERVER CODE */\n\n …Run Code Online (Sandbox Code Playgroud) 更新我用 Excel 文档而不是 PDF 对此进行了测试,并且它有效。为什么它不能与 PDF 一起使用?
我试图通过迭代文件路径字符串列表来向电子邮件添加 X 个附件。相反,我收到了 X 个附件,但它们都是同一文件的副本。因此,附件的数量是正确的,但其内容却不正确。
即使这样也会发生:
我正在使用FluentEmail发送电子邮件。另外,我基于以下示例(请参阅“多个附件”部分)。
我添加Debug.WriteLine(path)只是为了检查我是否能够正确输出循环中的字符串,我就是这样。
我的方法:
public async void SendInvoicesEmail() {
try {
using (SqlConnection con = new(ConnectionString.connectionString))
using (SqlCommand cmd = new("query text", con)) {
con.Open();
SmtpSender sender = new SmtpSender(() => new SmtpClient(host: "smtp.office365.com") {
EnableSsl = true,
UseDefaultCredentials = false,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential("email", "password"),
Port = 587
});
Email.DefaultSender = sender;
IFluentEmail …Run Code Online (Sandbox Code Playgroud) 我正在创建递增的发票编号,如下所示:AABBBB1122。
'A' 和 'B' 绑定到我的代码中的标识符。但是我需要的数字分别是month和year。例如:0821 (2021 年 8 月)。我不想以任何方式将它连接到日历。如果可能,我想定义一个开始日期,并从那里增加。
也就是说:0821必须增加到0921、1021、1121、1221 - 在年份增加之前;0122。
我怎样才能做到这一点?
到目前为止我所得到的:
string AA {
get { return this.IdentifierA.Substring(0, 2);
set { SetAndNotify(ref this.AA, value); }
}
string BB {
get { return this.IdentifierB.Substring(0, 4);
set { SetAndNotify(ref this.BB, value); }
}
string InvoiceNumber {
get { return String.Concat(AA + BB + /* what goes here? */).ToUpper(); }
set { …Run Code Online (Sandbox Code Playgroud)