Current filter:
                                You should refresh the page.
                                0
                                  • Hi,
                                    I have this code in my project

                                    private void resultRichEdit_CalculateDocumentVariable(object sender, CalculateDocumentVariableEventArgs e)
                                            {
                                                if (e.VariableName == "Supplier")
                                                {
                                                    RichEditDocumentServer supplierTemplate = new RichEditDocumentServer();
                                                    
                                                    int position = supplierTemplate.Document.CaretPosition.ToInt();
                                                    DocumentPosition dp = supplierTemplate.Document.CreatePosition(position);
                                                    DocumentPosition dp1 = supplierTemplate.Document.CreatePosition(position*2);
                                                    string includeMasterField = "MERGEFIELD CompanyName";
                                                    string includeDetailField = "DOCVARIABLE Product \"{MERGEFIELD SupplierID}\"";
                                                    supplierTemplate.Document.Fields.Add(dp, includeMasterField);
                                                    supplierTemplate.Document.Fields.Add(dp1, includeDetailField);

                                                    RichEditDocumentServer supplierProcessor = new RichEditDocumentServer();
                                                    supplierProcessor.CalculateDocumentVariable += new CalculateDocumentVariableEventHandler(supplierProcessor_CalculateDocumentVariable);

                                                    supplierTemplate.Options.MailMerge.DataSource = objSupplier;
                                                    supplierTemplate.MailMerge(supplierProcessor.Document);

                                                    supplierProcessor.CalculateDocumentVariable -= supplierProcessor_CalculateDocumentVariable;

                                                    e.Value = supplierProcessor;

                                                    e.Handled = true;
                                                }
                                            }

                                            private void supplierProcessor_CalculateDocumentVariable(object sender, CalculateDocumentVariableEventArgs e)
                                            {
                                                int currentSupId = GetID(e.Arguments[0].Value);

                                                if (currentSupId == -1)
                                                {
                                                    return;
                                                }

                                                if (supplierID != currentSupId)
                                                {
                                                    objProduct = (List<Product>)GetProductsDataFilteredbySupplier(currentSupId);
                                                    supplierID = currentSupId;
                                                }

                                                if (e.VariableName == "Product")
                                                {
                                                    RichEditDocumentServer productTemplate = new RichEditDocumentServer();
                                                    RichEditDocumentServer productProcessor = new RichEditDocumentServer();

                                                    int position = productTemplate.Document.CaretPosition.ToInt();
                                                    DocumentPosition dp = productTemplate.Document.CreatePosition(position);
                                                    string includePictureField = "MERGEFIELD ProductName";
                                                    productTemplate.Document.Fields.Add(dp, includePictureField);

                                                    productTemplate.Options.MailMerge.DataSource = objProduct;

                                                    MailMergeOptions options = productTemplate.CreateMailMergeOptions();
                                                    options.MergeMode = MergeMode.JoinTables;

                                                    productProcessor.CalculateDocumentVariable += new CalculateDocumentVariableEventHandler(productProcessor_CalculateDocumentVariable);
                                                    productTemplate.MailMerge(options, productProcessor);

                                                    productProcessor.CalculateDocumentVariable -= productProcessor_CalculateDocumentVariable;

                                                    e.Value = productProcessor;

                                                    e.Handled = true;
                                                }
                                            }

                                    The line :
                                    string includeDetailField = "DOCVARIABLE Product \"{MERGEFIELD SupplierID}\"";
                                    seems not works well...
                                    How can the code be written rightly ?

                                    For your information, I use the project sample E3377 from DevExpress

                                    Can you help me ?

                                    thanks

                                    Best Regards,

                                    Candra

                                0

                                Hello Candra,

                                Here is a code snippet that illustrates how to create a DOCVARIABLE field with nested MERGEFIELD:

                                	
                                [C#]
                                string includeDetailField1 = "DOCVARIABLE Product \"\" "; string includeDetailField2 = "MERGEFIELD SupplierID"; richEditControl1.Document.Fields.Add(richEditControl1.Document.Range.Start, includeDetailField1); richEditControl1.Document.Fields.Add(richEditControl1.Document.CreatePosition(22), includeDetailField2);

                                I hope you will find this information helpful.

                                Thanks,
                                Alessandro.

                                0

                                Hi,

                                As you can see, the variable includeMasterField is the header and the variable includeDetailField is the detail.
                                How can I add the includeDetailField in the bottom of includeMasterField.
                                With another words, how can I add enter in code in RichEditControl.
                                Thanks...

                                Best Regards,

                                Candra

                                0

                                Hello Candra,

                                Utilize the RichEditControl.Document.InsertParagraph() method (see SubDocument.InsertParagraph Method ) for this purpose.

                                Thanks,
                                Alessandro.

                                0

                                Hi, it's works fine with your solution..
                                For the add, it can be solved with richEditControl1.Document.AppendText(System.Environment.NewLine)

                                For another issue,
                                How about if I have 2 key field for the detail.
                                For example. The header has EmployeeId, and the detail has 2 key field EmployeeId and EmpSeq?
                                How can DocVariable can be written with this issue?

                                Thanks...

                                Best regards,

                                Candra

                                0

                                Hello Candra,

                                Utilize the same approach for this purpose:

                                	
                                [C#]
                                string includeDetailField1 = "DOCVARIABLE Product \"\" \"\" "; string includeDetailField2 = "MERGEFIELD EmployeeId"; string includeDetailField3 = "MERGEFIELD EmpSeq"; richEditControl1.Document.Fields.Add(richEditControl1.Document.Range.Start, includeDetailField1); richEditControl1.Document.Fields.Add(richEditControl1.Document.CreatePosition(22), includeDetailField2); richEditControl1.Document.Fields.Add(richEditControl1.Document.CreatePosition(49), includeDetailField3);

                                Thanks,
                                Alessandro.

                                0

                                Hi Alessandro,

                                It's works fine for the solution that you give it to me, thanks.
                                But I have another issue again.
                                I tried to save it into database :

                                MemoryStream ms = new MemoryStream();
                                RichEditControl1.SaveDocument(ms, DocumentFormat.OpenDocument);

                                Byte[] array = ms.ToArray();

                                The variable array I saved in database with sqldbtype = Varbinary(max)

                                But when I tried to load it with :
                                MemoryStream ms = new MemoryStream(array);
                                RichEditControl1.LoadDocument(ms, DocumentFormat.OpenDocument);

                                The fields change like this in the document :
                                { DOCVARIABLE Product " MERGEFIELD EmployeeId <<EmployeeId>>" }
                                When I display it.

                                Is there something that I missing ?

                                Thanks.

                                0

                                Hello Candra,

                                It seems very strange. We need a standalone (self-contained) sample from your side to diagnose the cause of the problem. If possible, keep only those parts in this sample that are essential for reproducing this issue. We are looking forward to hearing from you.

                                Thanks,
                                Alessandro.

                                You must  log in  or  register  to leave an answer

                                Is your intention to post an answer to your own question?

                                • If so, then proceed.
                                • If you simply wanted to post additional information, ask for further clarification, or to just say "Thanks!", please click Leave a Comment.
                                • If you wish to edit your original question, please use the Edit button in the Toolbox at the top right corner of that entry.