c# - How to get column maximum length in a DataTable

Get the maximum length of a column in a DataTable
The DataTable class represents one table of in-memory data. The DataTable objects are conditionally case-sensitive. To create a DataTable programmatically the asp.net developers must first define its schema by adding DataColumn objects to the DataColumnCollection. To add rows to a DataTable, the developers must use the NewRow() method to return a new DataRow object at first. The DataTable also contains a collection of Constraint objects that can be used to ensure the integrity of the data.

The following asp.net c# tutorial code demonstrates how we can get the maximum size/length of columns from a DataTable. So we have to get the maximum length of each DataColumn object within a DataTable instance.

In this example, we used the DataTable class Columns property to get its columns collection as a DataColumnCollection object. Then we loop through the columns collection. In the looping time, we used DataColumnCollection’s Item[Int32] property to get the specified DataColumn instance.

After getting the DataColumn by index we can get its maximum size/length by using the DataColumn class MaxLength property. We also get the specified column’s name by using the DataColumn class ColumnName property.

The DataTable class Columns property gets the collection of columns that belong to this table. The Columns property value is a DataColumnCollection that contains the collection of DataColumn objects for the table. An empty collection is returned if no DataColumn objects exist.

The DataColumnCollection class represents a collection of DataColumn objects for a DataTable. The DataColumnCollection class Item[Int32] property gets the DataColumn from the collection at the specified index.

The DataColumn class MaxLength property gets or sets the maximum length of a text column. This property value is an Int32 which is the maximum length of the column in characters. If the column has no maximum length then the value is -1 and this is the default value.

The DataColumn class MaxLength property is ignored for non-text columns. An ArgumentException exception is raised if the asp.net web developers assign the MaxLength property to a non-string column.
DataColumnMaxLengthFromDataTable.aspx

<%@ Page Language="C#" AutoEventWireup="true" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html>
<script runat="server">
    void Button1_Click(object sender, System.EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.TableName = "Books";

        DataColumn dc1 = new DataColumn();
        dc1.ColumnName = "BookID";
        dc1.DataType = typeof(int);
        dc1.AllowDBNull = false;

        DataColumn dc2 = new DataColumn();
        dc2.ColumnName = "BookName";
        dc2.DataType = typeof(string);
        dc2.MaxLength = 95;

        DataColumn dc3 = new DataColumn();
        dc3.ColumnName = "Author";
        dc3.DataType = typeof(string);
        dc3.MaxLength = 55;
        
        dt.Columns.AddRange(new DataColumn[] { dc1, dc2,dc3 });

        dt.Rows.Add(new object[] { "1", "Mining the Social Web", "Matthew Russell" });
        dt.Rows.Add(new object[] { "2", "Cassandra: The Definitive Guide", "Eben Hewitt" });
        dt.Rows.Add(new object[] { "3", "Data Analysis with Open Source Tools", "Philipp K. Janert" });
        
        GridView1.DataSource = dt;
        GridView1.DataBind();

        Label1.Text = "<b><u>Columns with MaxLength in DataTable....</u></b><br />";
        for (int i=0; i< dt.Columns.Count; i++)
        {
            Label1.Text += dt.Columns[i].ColumnName + " || ";
            Label1.Text += dt.Columns[i].MaxLength + "<br/ >";
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>How to get DataColumn MaxLength (maximum length) from DataTable in ado.net</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h2 style="color:DarkBlue; font-style:italic;">
            How to get DataColumn MaxLength
            <br /> programmatically from DataTable in ado.net
        </h2>
        <hr width="450" align="left" color="CornFlowerBlue" />
        <asp:GridView 
            ID="GridView1"
            runat="server"
            BorderColor="Snow"
            ForeColor="SlateBlue"
            Width="525"
            >
            <HeaderStyle BackColor="DarkTurquoise" Height="35" />
            <RowStyle BackColor="PaleTurquoise" BorderStyle="Dotted" BorderWidth="2" />
            <AlternatingRowStyle BackColor="LightBlue" />
        </asp:GridView>
        <br />
        <asp:Label
             ID="Label1"
             runat="server"
             Font-Size="Large"
             ForeColor="Crimson"
             >
        </asp:Label>
        <br />
        <asp:Button 
            ID="Button1"
            runat="server"
            OnClick="Button1_Click"
            Text="Populate GridView"
            Height="45"
            Font-Bold="true"
            ForeColor="DarkBlue"
            />
    </div>
    </form>
</body>
</html>
More c# examples