The ServerTextControl TX Text Control .NET Server for ASP.NET
TXTextControl Namespace
ServerTextControl Class
The ServerTextControl class implements a component that provide high-level text processing features for server-based applications.
class implements a non-UI component to create documents programmatically or to connect to the MailMerge TX Text Control .NET Server for ASP.NET
DocumentServer Namespace
MailMerge Class
The MailMerge class is a .NET component that can be used to effortlessly merge template documents with database content in .NET projects, such as ASP.NET web applications, web services or Windows services.
engine to generate documents from templates and hierarchical data. These processes doesn't require access to interactive features such as adding tracked changes or to accept and reject them.

For example, the following code can be used to iterate through all tracked changes to get the text and user name:

using (TXTextControl.ServerTextControl tx = new TXTextControl.ServerTextControl()) {
tx.Create();
tx.Load(data, TXTextControl.BinaryStreamType.InternalUnicodeFormat);
foreach(TXTextControl.TrackedChange change in tx.TrackedChanges) {
Console.WriteLine("Text: {0}, User: {1}", change.Text, change.UserName);
}
}
view raw test.cs hosted with ❤ by GitHub

But the ServerTextControl doesn't have a UserNames TX Text Control .NET Server for ASP.NET
Web.MVC Namespace
TextControlSettings Class
UserNames Property
Gets or sets a list of names specifying users who have access to editable regions.
property like the visual document editor to add interactive tracked changes to a document.

Interactive ServerTextControl

Consider a scenario where you want to programmatically accept or reject changes in a non-UI, server-side process. Or, when applying changes to a document programmatically, you want to keep track of those changes. For this purpose, an interactive version of the ServerTextControl is available: The TextViewGenerator TX Text Control .NET Server for ASP.NET
ServerVisualization Namespace
TextViewGenerator Class
The TextViewGenerator class is a special ServerTextControl, which can be used to visualize the control's text contents through a generated image.
class.

This class is inherited from ServerTextControl, but implements user interactive features including event handling. An instance is created very similar to ServerTextControl:

using (TXTextControl.ServerVisualisation.TextViewGenerator tx =
new TXTextControl.ServerVisualisation.TextViewGenerator()) {
tx.Create();
// ready to use
}
view raw test.cs hosted with ❤ by GitHub

Applying Tracked Changes

The following code is used to create a new instance of TextViewGenerator to set a current user name and to apply two changes (delete and add) to text in the document:

using (TXTextControl.ServerVisualisation.TextViewGenerator tx =
new TXTextControl.ServerVisualisation.TextViewGenerator()) {
tx.Create();
tx.Selection.Text = "1234567890";
tx.IsTrackChangesEnabled = true;
tx.UserNames = new string[] {"qa@textcontrol.com" };
tx.Select(2, 3);
tx.Selection.Text = "New Text";
}
view raw test.cs hosted with ❤ by GitHub

This is very helpful to apply modifications from the document viewer that allows users to step through tracked changes and to accept or reject them. The results can then be applied to the actual document programmatically in a server-side non-UI process.

Learn More

A new feature has been rolled out with the latest update of the TX Text Control DocumentViewer that allows users to navigate through tracked changes in order to reject and accept changes in browser and mobile views.

Document Viewer: Processing Tracked Changes

Interactive Events

The TextViewGenerator implements all interactive events similar to the visual versions of TX Text Control including the web document editor. The following code shows how to attach the Changed and TableCreated event:

using (TXTextControl.ServerVisualisation.TextViewGenerator tx =
new TXTextControl.ServerVisualisation.TextViewGenerator()) {
tx.Create();
tx.Changed += Tx_Changed;
tx.TableCreated += Tx_TableCreated;
tx.Selection.Text = "1234567890";
tx.Tables.Add(5, 5, 13);
}
private void Tx_TableCreated(object sender, TXTextControl.TableEventArgs e) {
Console.WriteLine("Table added. Id: {0}", e.Table.ID);
}
private void Tx_Changed(object sender, EventArgs e) {
Console.WriteLine("Content changed");
}
view raw test.cs hosted with ❤ by GitHub
Content changed
Table added. Id: 13
Content changed

Conclusion

In order to apply interactive changes to a document programmatically, the non-UI class TextViewGenerator can be used. This class is completely compatible to ServerTextControl, but exposes all interactive features and event handling.