邮件合并效能与事先的关系的将TX文书档案全部存入数据库有所分歧,邮件合并成效是将数据库中一定字段插入到模板文书档案的特定岗位。与此同时,本章节还会以身作则在邮件合并成效的根基上加上打字与印刷效能、以及如何创建邮件合并所需的沙盘文书档案。
本章节对应的源代码能够在TX Text Control.NET的安装目录中找到:
        Samples\WinForms\VB.NET\MailMerge
        Samples\WinForms\CSharp\MailMerge
第壹步:合并数据库数据和文书
       
运行程序并选用Template菜单下的Load命令,通过Load命令加载模板文件,模板文件中包含部分文本域,这个文本域的数码将被数据库中对应的数额替换。
图片 1
        选用Database菜单下的Browse Database命令展开【Address
Database】窗体,通过该窗体能够从数据库中精选数据并统一到文书档案中。
图片 2
       
当点击Merge按键时,数据库中的数据将被拷贝到文书档案中相应的文本域中。       
你还是能透过重复点击Next和Merge按键来统一差别的数额到文书档案中。
图片 3
       
该示例中使用的数据源来自三个XML文件,文件中含有部分地址音讯。展开【Address
Database】窗体以及历次点击【Previous】和【Next】开关都会经过GetRecord()方法来博取数据:

[C#] 
private void GetRecord() 
{ 
    DataRow Row = dsAddress.Tables[0].Rows[CurrentRow]; 
    lblCompany.Text = Row["company"].ToString(); 
    lblRecipient.Text = Row["recipient"].ToString(); 
    lblStreet.Text = Row["street"].ToString(); 
    lblCity.Text = Row["city"].ToString(); 
    lblCountry.Text = Row["country"].ToString(); 
    lblSalutation.Text = Row["salutation"].ToString(); 
    SetButtonState(); 
}

点击【Merge】按键时,数据源中的数据将被拷贝到文书档案的应和的文本域中,文本域与数据源中的字段有着同样名字,所以经过For
Each操作能够成功那个拷贝职业:

[C#] 
private void cmdMerge_Click(object sender, System.EventArgs e) 
{ 
    foreach (TXTextControl.TextField Field in tx.TextFields) 
    { 
        Field.Text = dsAddress.Tables[0].Rows[CurrentRow][Field.Name].ToString(); 
    } 
}

其次步:打印操作
        在【Address
Database】窗体中增加1个【Print】开关,当点击【Print】按键时,程序会将数据源中的记录合并到文书档案中并拓展打字与印刷操作:

[C#] 
private void cmdPrint_Click(object sender, System.EventArgs e) 
{ 
    PrintDocument PrintDoc = new PrintDocument(); 
    foreach (DataRow CurrentRow in dsAddress.Tables[0].Rows) 
    { 
        // Merge data from current record 
        foreach (TXTextControl.TextField Field in tx.TextFields) 
            Field.Text = CurrentRow[Field.Name].ToString(); 
        // Print 
        PrintDoc.PrinterSettings.FromPage = 0; 
        PrintDoc.PrinterSettings.ToPage = tx.Pages; 
        tx.Print(PrintDoc); 
    } 
}

由于打字与印刷操作会自动将数据开始展览合并,所以不再要求步骤第一中学的【Merge】开关,同时选取Grid来体现数据源中的数据,那样能够更加好的浏览数据源中的数据
图片 4
其三步:创造模板文书档案
加载、保存和导入文本
在率先和第3步中先后会自行加载template.tx模板文件,所以不能够加载别的模板文书档案,也无法保存文书档案。由此供给修改加载文件有关的代码,通过二个文本对话框来抉择必要加载的模版文书档案,同时充裕【Saveing】和【Importing】菜单项,供给专注的是唯有将文书档案保存为TX
Text
Control的格式工夫保存文书档案中的文本域。而用户能够经过【SaveFile】对话框来讲文档保存了其余格式的公文:

[C#] 
private void mnuFile_SaveTemplateAs_Click(object sender, System.EventArgs e) 
{ 
    dlgSaveFile.Filter = "Text Control Files (*.tx)|*.tx"; 
    dlgSaveFile.ShowDialog(); 
    if (dlgSaveFile.FileName != "") 
        textControl1.Save(dlgSaveFile.FileName, 
        TXTextControl.StreamType.InternalFormat); 
}

累加数据库字段
第一和第一步中蕴藏了必须的文本域,为了创造更加灵活的文件,应用程序应该提需求用户选拔数据库字段的意义,由用户来调整将怎么样字段增添到模板文书档案中。在程序中增加3个【Insert】菜单,菜单蕴含数据源中的全部列:
图片 5
唯独,每种数据源恐怕带有不相同的列音信,【Insert】菜单也急需动态创造。数据源中的每列就对应【Insert】菜单的三个菜单项,当点击那么些菜单项时,会在文书档案中穿件相应的文本域:

[C#] 
private void CreateTextFieldMenu() 
{ 
    mnuInsert.MenuItems.Clear(); 
    foreach (DataColumn DataField in dsAddress.Tables[0].Columns) 
        mnuInsert.MenuItems.Add(DataField.ColumnName, 
            new EventHandler(InsertMenuItems_Click)); 
}

private void InsertMenuItems_Click(object sender, System.EventArgs e) 
{ 
    TXTextControl.TextField textField = new TXTextControl.TextField(); 
    textField.Text = "(" + ((MenuItem)sender).Text + ")"; 
    textField.Name = ((MenuItem)sender).Text; 
    textField.ShowActivated = true; 
    textField.DoubledInputPosition = true; 
    textControl1.TextFields.Add(textField); 
}

TX Text
Control试用版下载

相关文章

网站地图xml地图