---
title: Form data
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

List of examples:

### Adding data records to a form and sending email notifications

```csharp

// Gets the form object representing the 'ContactUs' form on the current site
BizFormInfo formObject = BizFormInfo.Provider.Get("ContactUs", SiteContext.CurrentSiteID);

if (formObject != null)
{
    // Gets the class name of the 'ContactUs' form
    DataClassInfo formClass = DataClassInfoProvider.GetDataClassInfo(formObject.FormClassID);
    string formClassName = formClass.ClassName;

    // Creates a new data record for the form
    BizFormItem newFormItem = BizFormItem.New(formClassName);

    // Sets the values for the form's fields (UserMessage in this case)
    newFormItem.SetValue("UserMessage", "This is a message submitted through the API.");

    // Saves the new form record into the database
    // Set values for all 'Required' fields in the form before calling the Insert method, otherwise an exception will occur
    newFormItem.Insert();

    // Obtains a factory object used to create a form notification sender service for the given form
    IBizFormMailSenderFactory senderFactory = Service.Resolve<IBizFormMailSenderFactory>();

    // Creates an instance of the form notification sender for the inserted form item
    IBizFormMailSender sender = senderFactory.GetFormMailSender(formObject, newFormItem);

    // Sends a notification email to users (as specified on the form's 'Email notification' tab)
    sender.SendNotificationEmail();

    // Sends a confirmation email to the submitter (based on the form's autoresponder settings)
    sender.SendConfirmationEmail();
}

```

[> Back to list of examples](#toc)

### Loading data records from a form

```csharp

// Gets the form object representing the 'ContactUs' form on the current site
BizFormInfo formObject = BizFormInfo.Provider.Get("ContactUs", SiteContext.CurrentSiteID);

if (formObject != null)
{
    // Gets the class name of the 'ContactUs' form
    DataClassInfo formClass = DataClassInfoProvider.GetDataClassInfo(formObject.FormClassID);
    string formClassName = formClass.ClassName;

    // Loads the form's data
    ObjectQuery<BizFormItem> data = BizFormItemProvider.GetItems(formClassName);

    // Loops through the form's data records
    foreach (BizFormItem item in data)
    {
        // Gets the values of the 'UserEmail' and 'UserMessage' text fields for the given data record
        string emailFieldValue = item.GetStringValue("UserEmail", "");
        string messageFieldValue = item.GetStringValue("UserMessage", "");
    }
}

```

[> Back to list of examples](#toc)

### Updating the data records of a form

```csharp

// Gets the form object representing the 'ContactUs' form on the current site
BizFormInfo formObject = BizFormInfo.Provider.Get("ContactUs", SiteContext.CurrentSiteID);

if (formObject != null)
{
    // Gets the class name of the 'ContactUs' form
    DataClassInfo formClass = DataClassInfoProvider.GetDataClassInfo(formObject.FormClassID);
    string formClassName = formClass.ClassName;

    // Loads all data records from the form whose 'UserEmail' field ends with the ".net" suffix
    ObjectQuery<BizFormItem> data = BizFormItemProvider.GetItems(formClassName)
                                                            .WhereEndsWith("UserEmail", ".net");

    // Loops through the form's data records
    foreach (BizFormItem item in data)
    {
        // Assigns and saves a value for the form record's 'InternalNote' field
        item.SetValue("InternalNote", "This note was added by the system.");
        item.SubmitChanges(false);
    }
}

```

[> Back to list of examples](#toc)

### Deleting form data records

```csharp

// Gets the form object representing the 'ContactUs' form on the current site
BizFormInfo formObject = BizFormInfo.Provider.Get("ContactUs", SiteContext.CurrentSiteID);

if (formObject != null)
{
    // Gets the class name of the 'ContactUs' form
    DataClassInfo formClass = DataClassInfoProvider.GetDataClassInfo(formObject.FormClassID);
    string formClassName = formClass.ClassName;

    // Loads all data records from the form that have an empty value in the 'UserMessage' field
    ObjectQuery<BizFormItem> data = BizFormItemProvider.GetItems(formClassName)
                                                            .WhereEmpty("UserMessage");

    // Loops through the form's data records
    foreach (BizFormItem item in data)
    {
        // Deletes all files stored in the form's fields
        BizFormInfoProvider.DeleteBizFormRecordFiles(formClass.ClassFormDefinition, item, SiteContext.CurrentSiteName);

        // Deletes the form record from the database
        item.Delete();
    }
}

```

[> Back to list of examples](#toc)
