VOOZH about

URL: https://www.cdata.com/kb/tech/domino-ado-infragistics-datagrid.rst

⇱ Create Dynamic HCL Domino Grids Using the Infragistics XamDataGrid


Create Dynamic HCL Domino Grids Using the Infragistics XamDataGrid

πŸ‘ Jerod Johnson
Jerod Johnson
Director, Technology Evangelism
Learn how you can connect HCL Domino to Infragistics XamDataGrid to build dynamic grids.

Using Infragistics WPF UI controls, you can build contemporary applications reminiscent of Microsoft Office for both desktop and touch-based devices. When coupled with the CData ADO.NET Provider for HCL Domino, you gain the capability to construct interactive grids, charts, and various other visual elements while directly accessing real-time data from HCL Domino data. This article will guide you through the process of creating a dynamic grid within Visual Studio using the Infragistics XamDataGrid control.

You will need to install the Infragistics WPF UI components to continue. Download a free trial here: https://www.infragistics.com/products/wpf.

Create a WPF Project

Open VisualStudio and create a new WPF project.

Add a TextBox for passing a SQL query to the CData ADO.NET Provider and a Button for executing the query.

πŸ‘ Adding a TextBox and Button to the App.

The XAML at this stage is as follows:

< Window
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 xmlns:local="clr-namespace:CDataXamDataGridGroupingListApp"
 xmlns:igWPF="http://schemas.infragistics.com/xaml/wpf" x:Class="CDataXamDataGridGroupingListApp.MainWindow"
 mc:Ignorable="d"
 Title="MainWindow" Height="450" Width="800">
 < Grid>
 < TextBox x:Name="textBox" HorizontalAlignment="Left" Height="44" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="682" Margin="10,10,0,0"/>
 < Button x:Name="button" Content="Execute" HorizontalAlignment="Left" Margin="697,10,0,0" VerticalAlignment="Top" Width="85" Height="44"/>
 < /Grid>
< /Window>

Add and Configure a XamDataGrid

After adding the initial controls, add a XamDataGrid to the App. The component will appear in the Visual Studio toolbox.

πŸ‘ Adding the XamDataGrid to the App.

Arrange the component on the designer so that it is below the TextBox & Button and linked to the boundaries of the app.

πŸ‘ XamDataGrid Placement.

Once the XamDataGrid is placed, edit the XAML to set the XamDataGrid DataSource attribute to "{Binding}" and set the FieldSettings AllowRecordFiltering and AllowSummaries attributes to "true." Next, add an empty method as the Click event handler for the Button component. The XAML at this stage is as follows:

< Window
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 xmlns:local="clr-namespace:CDataXamDataGridGroupingListApp"
 xmlns:igWPF="http://schemas.infragistics.com/xaml/wpf" x:Class="CDataXamDataGridGroupingListApp.MainWindow"
 mc:Ignorable="d"
 Title="MainWindow" Height="450" Width="800">
 < Grid>
 < TextBox x:Name="textBox" HorizontalAlignment="Left" Height="44" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="682" Margin="10,10,0,0"/>
 < Button x:Name="button" Content="Execute" HorizontalAlignment="Left" Margin="697,10,0,0" VerticalAlignment="Top" Width="85" Click="Button_Click" Height="44"/>

 < igWPF:XamDataGrid Margin="10,59,10,10" DataSource="{Binding}">
 < igWPF:XamDataGrid.FieldSettings>
 < igWPF:FieldSettings AllowSummaries="True" AllowRecordFiltering="True"/>
 < /igWPF:XamDataGrid.FieldSettings>
 < /igWPF:XamDataGrid>

 < /Grid>
< /Window>

Connect to and Query HCL Domino

The last step in building our WPG App with a dynamic DataGrid is connecting to and querying live HCL Domino data. First add a reference to the CData ADO.NET Provider to the project (typically found in C:\Program Files\CData[product_name]\lib).

πŸ‘ Adding the CData ADO.NET Provider as a Reference (Salesforce is shown.)

Next, add the Provider to the namespace, along with the standard Data library:

using System.Data.CData.Domino;
using System.Data;

Finally, add the code to connect to HCL Domino and query using the text from the TextBox to the Click event handler.

Connecting to Domino

To connect to Domino data, set the following properties:

  • URL: The host name or IP of the server hosting the Domino database. Include the port of the server hosting the Domino database. For example: http://sampleserver:1234/
  • DatabaseScope: The name of a scope in the Domino Web UI. The driver exposes forms and views for the schema governed by the specified scope. In the Domino Admin UI, select the Scopes menu in the sidebar. Set this property to the name of an existing scope.

Authenticating with Domino

Domino supports authenticating via login credentials or an Entra ID (formerly Azure AD) OAuth application:

Login Credentials

To authenticate with login credentials, set the following properties:

  • AuthScheme: Set this to "OAuthPassword"
  • User: The username of the authenticating Domino user
  • Password: The password associated with the authenticating Domino user

The driver uses the login credentials to automatically perform an OAuth token exchange.

EntraID (formerly AzureAD)

This authentication method uses Entra ID (formerly Azure AD) as an IdP to obtain a JWT token. You need to create a custom OAuth application in Entra ID (formerly Azure AD) and configure it as an IdP. To do so, follow the instructions in the Help documentation. Then set the following properties:

  • AuthScheme: Set this to "EntraID (formerly AzureAD)"
  • InitiateOAuth: Set this to GETANDREFRESH. You can use InitiateOAuth to avoid repeating the OAuth exchange and manually setting the OAuthAccessToken.
  • OAuthClientId: The Client ID obtained when setting up the custom OAuth application.
  • OAuthClientSecret: The Client secret obtained when setting up the custom OAuth application.
  • CallbackURL: The redirect URI defined when you registered your app. For example: https://localhost:33333
  • AzureTenant: The Microsoft Online tenant being used to access data. Supply either a value in the form companyname.microsoft.com or the tenant ID.

    The tenant ID is the same as the directory ID shown in the Azure Portal's Entra ID (formerly Azure AD) > Properties page.

private void Button_Click(object sender, RoutedEventArgs e)
{
 //connecting to HCL Domino
 string connString = "Server=https://domino.corp.com;AuthScheme=OAuthPassword;User=my_domino_user;Password=my_domino_password;";
 using (var conn = new DominoConnection(connString))
 {
 //using the query from the TextBox
 var dataAdapter = new DominoDataAdapter(textBox.Text, conn);
 var table = new DataTable();
 dataAdapter.Fill(table);
 
 //passing the DataRowCollection to the DataContext
 // for use in the XamDataGrid
 this.DataContext = table.Rows;
 }
}

Run the Application

With the app fully configured, we are ready to display HCL Domino data in our XamDataGrid. When you click "Execute," the app connects to HCL Domino and submits the SQL query through the CData ADO.NET Provider.

πŸ‘ Querying HCL Domino Data

Live HCL Domino data is displayed in the grid.

πŸ‘ Displying HCL Domino Data (Salesforce is shown)

Group the data by dragging and dropping a column name into the header.

πŸ‘ Grouping HCL Domino Data (Salesforce is shown)

As you add groupings and filters, the underlying SQL query is submitted directly to HCL Domino, making it possible to drill down into live HCL Domino data to find only the specific information you need.

πŸ‘ Grouped and filtered HCL Domino Data (Salesforce is shown)

Free Trial & More Information

At this point, you have created a dynamic WPF App with access to live HCL Domino data. For more information, visit the CData ADO.NET Provider page. Download a free, 30-day trial and start working live HCL Domino data in apps built using the Infragistics UI controls today.