FieldNextIf
FieldNextIf class
Implementa el campo NEXTIF.
Para obtener más información, visite elTrabajar con campos artículo de documentación.
public class FieldNextIf : Field
Constructores
Nombre | Descripción |
---|---|
FieldNextIf() | Constructor predeterminado |
Propiedades
Nombre | Descripción |
---|---|
ComparisonOperator { get; set; } | Obtiene o establece el operador de comparación. |
DisplayResult { get; } | Obtiene el texto que representa el resultado del campo mostrado. |
End { get; } | Obtiene el nodo que representa el final del campo. |
Format { get; } | Obtiene unFieldFormat objeto que proporciona acceso escrito al formato del campo. |
IsDirty { get; set; } | Obtiene o establece si el resultado actual del campo ya no es correcto (obsoleto) debido a otras modificaciones realizadas en el documento. |
IsLocked { get; set; } | Obtiene o establece si el campo está bloqueado (no debe volver a calcular su resultado). |
LeftExpression { get; set; } | Obtiene o establece la parte izquierda de la expresión de comparación. |
LocaleId { get; set; } | Obtiene o establece el LCID del campo. |
Result { get; set; } | Obtiene o establece el texto que se encuentra entre el separador de campo y el final del campo. |
RightExpression { get; set; } | Obtiene o establece la parte derecha de la expresión de comparación. |
Separator { get; } | Obtiene el nodo que representa el separador de campos. Puede sernulo . |
Start { get; } | Obtiene el nodo que representa el inicio del campo. |
virtual Type { get; } | Obtiene el tipo de campo de Microsoft Word. |
Métodos
Nombre | Descripción |
---|---|
GetFieldCode() | Devuelve texto entre el inicio del campo y el separador de campo (o el final del campo si no hay separador). Se incluyen tanto el código de campo como el resultado del campo de los campos secundarios. |
GetFieldCode(bool) | Devuelve texto entre el inicio del campo y el separador de campo (o el final del campo si no hay separador). |
Remove() | Elimina el campo del documento. Devuelve un nodo justo después del campo. Si el final del campo es el último hijo de su nodo principal, devuelve su párrafo principal. Si el campo ya está eliminado, devuelvenulo . |
Unlink() | Realiza la desvinculación del campo. |
Update() | Realiza la actualización del campo. Se produce si el campo ya se está actualizando. |
Update(bool) | Realiza una actualización de campo. Se produce si el campo ya se está actualizando. |
Observaciones
Compara los valores designados por las expresiones.LeftExpression
yRightExpression
en comparación utilizando el operador designado porComparisonOperator
. Si la comparación es verdadera, el siguiente registro de datos se fusiona con el documento de combinación actual. (Los campos de combinación que siguen a NEXTIF en el documento main se reemplazan por valores del siguiente registro de datos en lugar del registro de datos actual). Si la comparación es falsa, el siguiente registro de datos se combina en un nuevo documento de combinación.
Ejemplos
Muestra cómo utilizar los campos SIGUIENTE/SIGUIENTEIF para combinar varias filas en una página durante una combinación de correspondencia.
public void FieldNext()
{
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Crea una fuente de datos para nuestra combinación de correspondencia con 3 filas.
// Una combinación de correspondencia que utilice esta tabla normalmente crearía un documento de 3 páginas.
DataTable table = new DataTable("Employees");
table.Columns.Add("Courtesy Title");
table.Columns.Add("First Name");
table.Columns.Add("Last Name");
table.Rows.Add("Mr.", "John", "Doe");
table.Rows.Add("Mrs.", "Jane", "Cardholder");
table.Rows.Add("Mr.", "Joe", "Bloggs");
InsertMergeFields(builder, "First row: ");
// Si tenemos varios campos combinados con el mismo nombre de campo,
// recibirán datos de la misma fila de la fuente de datos y mostrarán el mismo valor después de la combinación.
// Un campo SIGUIENTE le indica a la combinación de correspondencia que baje instantáneamente una fila,
// lo que significa que cualquier MERGEFIELD que siga al campo SIGUIENTE recibirá datos de la siguiente fila.
// Asegúrate de nunca intentar saltar a la siguiente fila mientras ya estás en la última fila.
FieldNext fieldNext = (FieldNext)builder.InsertField(FieldType.FieldNext, true);
Assert.AreEqual(" NEXT ", fieldNext.GetFieldCode());
// Después de la fusión, los valores de la fuente de datos que aceptan estos MERGEFIELD
// terminará en la misma página que los MERGEFIELD anteriores.
InsertMergeFields(builder, "Second row: ");
// Un campo NEXTIF tiene la misma función que un campo NEXT,
// pero salta a la siguiente fila sólo si una declaración construida por las siguientes 3 propiedades es verdadera.
FieldNextIf fieldNextIf = (FieldNextIf)builder.InsertField(FieldType.FieldNextIf, true);
fieldNextIf.LeftExpression = "5";
fieldNextIf.RightExpression = "2 + 3";
fieldNextIf.ComparisonOperator = "=";
Assert.AreEqual(" NEXTIF 5 = \"2 + 3\"", fieldNextIf.GetFieldCode());
// Si la comparación afirmada por el campo anterior es correcta,
// los siguientes 3 campos de combinación tomarán datos de la tercera fila.
// De lo contrario, estos campos volverán a tomar datos de la fila 2.
InsertMergeFields(builder, "Third row: ");
doc.MailMerge.Execute(table);
// Nuestra fuente de datos tiene 3 filas y nos saltamos filas dos veces.
// Nuestro documento de salida tendrá 1 página con datos de las 3 filas.
doc.Save(ArtifactsDir + "Field.NEXT.NEXTIF.docx");
}
/// <summary>
/// Utiliza un generador de documentos para insertar MERGEFIELD para una fuente de datos que contiene columnas denominadas "Título de cortesía", "Nombre" y "Apellido".
/// </summary>
public void InsertMergeFields(DocumentBuilder builder, string firstFieldTextBefore)
{
InsertMergeField(builder, "Courtesy Title", firstFieldTextBefore, " ");
InsertMergeField(builder, "First Name", null, " ");
InsertMergeField(builder, "Last Name", null, null);
builder.InsertParagraph();
}
/// <summary>
/// Utiliza un generador de documentos para insertar un MERRGEFIELD con propiedades específicas.
/// </summary>
public void InsertMergeField(DocumentBuilder builder, string fieldName, string textBefore, string textAfter)
{
FieldMergeField field = (FieldMergeField) builder.InsertField(FieldType.FieldMergeField, true);
field.FieldName = fieldName;
field.TextBefore = textBefore;
field.TextAfter = textAfter;
}
Ver también
- class Field
- espacio de nombres Aspose.Words.Fields
- asamblea Aspose.Words