邮件合并功能跟前的涉及的将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】窗体中上加一个【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
其三步:创建模板文档
加载、保存及导入文本
每当率先和次步着先后会自行加载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); 
}

丰富数据库字段
第一同次步着蕴藏了亟须的文本域,为了创建更灵活的文件,应用程序应该提供于用户选择数据库字段的功能,由用户来控制拿焉字段添加到模板文档中。在次中补充加一个【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地图