IMailMergeDataSource
محتويات
[
يخفي
]IMailMergeDataSource interface
نفّذ هذه الواجهة للسماح بدمج البريد من مصدر بيانات مخصص، مثل قائمة كائنات. كما تدعم البيانات الرئيسية والتفصيلية.
public interface IMailMergeDataSource
الخصائص
اسم | وصف |
---|---|
TableName { get; } | يعيد اسم مصدر البيانات. |
طُرق
اسم | وصف |
---|---|
GetChildDataSource(string) | يستدعي محرك دمج البريد Aspose.Words هذه الطريقة عندما يواجه بداية منطقة دمج بريد متداخلة. |
GetValue(string, out object) | يعيد قيمة لاسم الحقل المحدد أوخطأ شنيع إذا لم يتم العثور على الحقل. |
MoveNext() | ينتقل إلى السجل التالي في مصدر البيانات. |
ملاحظات
عند إنشاء مصدر بيانات، يجب تهيئته للإشارة إلى BOF (قبل السجل الأول). سيستدعي محرك دمج البريد Aspose.WordsMoveNext
للانتقال إلى السجل التالي and ثم استدعاءGetValue
لكل حقل دمج يصادفه في المستند أو منطقة دمج البريد الحالية.
أمثلة
يوضح كيفية تنفيذ دمج البريد مع مصدر البيانات في شكل كائن مخصص.
public void CustomDataSource()
{
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.InsertField(" MERGEFIELD FullName ");
builder.InsertParagraph();
builder.InsertField(" MERGEFIELD Address ");
List<Customer> customers = new List<Customer>
{
new Customer("Thomas Hardy", "120 Hanover Sq., London"),
new Customer("Paolo Accorti", "Via Monte Bianco 34, Torino")
};
// لاستخدام كائن مخصص كمصدر بيانات، يجب عليه تنفيذ واجهة IMailMergeDataSource.
CustomerMailMergeDataSource dataSource = new CustomerMailMergeDataSource(customers);
doc.MailMerge.Execute(dataSource);
doc.Save(ArtifactsDir + "MailMergeCustom.CustomDataSource.docx");
}
/// <summary>
/// مثال على فئة "كيان البيانات" في تطبيقك.
/// </summary>
public class Customer
{
public Customer(string aFullName, string anAddress)
{
FullName = aFullName;
Address = anAddress;
}
public string FullName { get; set; }
public string Address { get; set; }
}
/// <summary>
/// مصدر بيانات دمج البريد المخصص الذي تقوم بتنفيذه للسماح لـ Aspose.Words
/// لدمج البيانات من كائنات العميل الخاصة بك في مستندات Microsoft Word.
/// </summary>
public class CustomerMailMergeDataSource : IMailMergeDataSource
{
public CustomerMailMergeDataSource(List<Customer> customers)
{
mCustomers = customers;
// عندما نقوم بتهيئة مصدر البيانات، يجب أن يكون موضعه قبل السجل الأول.
mRecordIndex = -1;
}
/// <summary>
/// اسم مصدر البيانات. يُستخدم بواسطة Aspose.Words فقط عند تنفيذ دمج البريد مع مناطق قابلة للتكرار.
/// </summary>
public string TableName
{
get { return "Customer"; }
}
/// <summary>
/// تستدعي Aspose.Words هذه الطريقة للحصول على قيمة لكل حقل بيانات.
/// </summary>
public bool GetValue(string fieldName, out object fieldValue)
{
switch (fieldName)
{
case "FullName":
fieldValue = mCustomers[mRecordIndex].FullName;
return true;
case "Address":
fieldValue = mCustomers[mRecordIndex].Address;
return true;
default:
// قم بإرجاع "false" إلى محرك دمج البريد Aspose.Words للإشارة إلى
// لم نتمكن من العثور على حقل بهذا الاسم.
fieldValue = null;
return false;
}
}
/// <summary>
/// تنفيذ قياسي للانتقال إلى السجل التالي في المجموعة.
/// </summary>
public bool MoveNext()
{
if (!IsEof)
mRecordIndex++;
return !IsEof;
}
public IMailMergeDataSource GetChildDataSource(string tableName)
{
return null;
}
private bool IsEof
{
get { return (mRecordIndex >= mCustomers.Count); }
}
private readonly List<Customer> mCustomers;
private int mRecordIndex;
}
أنظر أيضا
- مساحة الاسم Aspose.Words.MailMerging
- المجسم Aspose.Words