MappedDataFieldCollection

MappedDataFieldCollection class

يسمح بالتعيين التلقائي بين أسماء الحقول في مصدر البيانات وأسماء حقول دمج البريد في المستند.

public class MappedDataFieldCollection : IEnumerable<KeyValuePair<string, string>>

الخصائص

اسم وصف
Count { get; } الحصول على عدد العناصر الموجودة في المجموعة.
Item { get; set; } الحصول على أو تعيين اسم الحقل في مصدر البيانات المرتبط بحقل دمج البريد المحدد.

طُرق

اسم وصف
Add(string, string) إضافة تعيين حقل جديد .
Clear() يزيل كل العناصر من المجموعة.
ContainsKey(string) لتحديد ما إذا كان التعيين من الحقل المحدد في المستند موجودًا في المجموعة.
ContainsValue(string) تحديد ما إذا كان التعيين من الحقل المحدد في مصدر البيانات موجودًا في المجموعة.
GetEnumerator() إرجاع كائن تعداد القاموس الذي يمكن استخدامه للتكرار على كافة العناصر في المجموعة.
Remove(string) يزيل تعيين الحقل .

ملاحظات

يتم تنفيذ ذلك كمجموعة من مفاتيح السلسلة في قيم السلاسل. المفاتيح هي أسماء حقول دمج المراسلات في المستند والقيم هي أسماء الحقول في مصدر البيانات.

أمثلة

يوضح كيفية تعيين أعمدة البيانات و MERGEFIELDs بأسماء مختلفة بحيث يتم نقل البيانات بينها أثناء دمج البريد.

public void MappedDataFieldCollection()
{
    Document doc = CreateSourceDocMappedDataFields();
    DataTable dataTable = CreateSourceTableMappedDataFields();

    // يحتوي الجدول على عمود يسمى "Column2" ، ولكن لا توجد MERGEFIELDs بهذا الاسم.
    // أيضًا ، لدينا MERGEFIELD يسمى "Column3" ، لكن مصدر البيانات لا يحتوي على عمود بهذا الاسم.
    // إذا كانت البيانات من "Column2" مناسبة لـ "Column3" MERGEFIELD ،
    // يمكننا تعيين اسم العمود هذا إلى MERGEFIELD في زوج المفاتيح / القيمة "MappedDataFields".
    MappedDataFieldCollection mappedDataFields = doc.MailMerge.MappedDataFields;

    // يمكننا ربط اسم عمود مصدر البيانات باسم MERGEFIELD مثل هذا.
    mappedDataFields.Add("MergeFieldName", "DataSourceColumnName");

    // ربط عمود مصدر البيانات المسمى "Column2" بـ MERGEFIELDs المسماة "Column3".
    mappedDataFields.Add("Column3", "Column2");

    // اسم MERGEFIELD هو "مفتاح" اسم عمود مصدر البيانات ذي الصلة "القيمة".
    Assert.AreEqual("DataSourceColumnName", mappedDataFields["MergeFieldName"]);
    Assert.True(mappedDataFields.ContainsKey("MergeFieldName"));
    Assert.True(mappedDataFields.ContainsValue("DataSourceColumnName"));

    // الآن إذا قمنا بتشغيل دمج المراسلات هذا ، فستأخذ "Column3" MERGEFIELDs البيانات من "Column2" في الجدول.
    doc.MailMerge.Execute(dataTable);

    doc.Save(ArtifactsDir + "MailMerge.MappedDataFieldCollection.docx");

    // يمكننا تكرار العناصر الموجودة في هذه المجموعة.
    Assert.AreEqual(2, mappedDataFields.Count);

    using (IEnumerator<KeyValuePair<string, string>> enumerator = mappedDataFields.GetEnumerator())
        while (enumerator.MoveNext())
            Console.WriteLine(
                $"Column named {enumerator.Current.Value} is mapped to MERGEFIELDs named {enumerator.Current.Key}");

    // يمكننا أيضًا إزالة العناصر من المجموعة.
    mappedDataFields.Remove("MergeFieldName");

    Assert.False(mappedDataFields.ContainsKey("MergeFieldName"));
    Assert.False(mappedDataFields.ContainsValue("DataSourceColumnName"));

    mappedDataFields.Clear();

    Assert.AreEqual(0, mappedDataFields.Count);
}

/// <summary>
/// أنشئ مستندًا يحتوي على 2 MERGEFIELDs ، أحدهما لا يحتوي على ملف
/// العمود المقابل في جدول البيانات من الطريقة أدناه.
/// </summary>
private static Document CreateSourceDocMappedDataFields()
{
    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);

    builder.InsertField(" MERGEFIELD Column1");
    builder.Write(", ");
    builder.InsertField(" MERGEFIELD Column3");

    return doc;
}

/// <summary>
/// أنشئ جدول بيانات من عمودين ، أحدهما لا يحتوي على ملف
/// MERGEFIELD المقابل في المستند المصدر من الطريقة أعلاه.
/// </summary>
private static DataTable CreateSourceTableMappedDataFields()
{
    DataTable dataTable = new DataTable("MyTable");
    dataTable.Columns.Add("Column1");
    dataTable.Columns.Add("Column2");
    dataTable.Rows.Add(new object[] { "Value1", "Value2" });

    return dataTable;
}

أنظر أيضا