c# - How to create a DataColumn with default value

DataColumn DefaultValue Property
.Net framework's DataColumn represents the schema of a column in a DataTable. DataColumn class exists in System.Data namespace.

We can initialize a new DataColumn class by many constructors such as DataColumn(), DataColumn(String), DataColumn(String, Type) etc. DataColmun() constructor initialize a new DataColumn class instance as type string.

DataColumn.DefaultValue property allow us to get or set the default value for the column when we are creating new rows. DefaultVlaue property value data type is System.String which represents a value appropriate to the column's DataType.

DataColumn DefaultVlaue property throw InvalidCastException exception, when we are adding a row and the default value is not follow column's data type.

When we create a new DataRow, a default value is automatically assigned to the column which DefaultVlaue property is set. if we set AutoIncrement is true for a DataColumn, then we cannot set a default value for the column.

The following ado.net c# example code demonstrate us how can we specify a default value for a DataColumn in an asp.net application.
DataColumnDefaultValue.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 dc = new DataColumn();
        dc.ColumnName = "BookID";
        dc.DataType = typeof(int);
        dt.Columns.Add(dc);

        DataColumn dc2 = new DataColumn();
        dc2.ColumnName = "BookName";
        dc2.DataType = typeof(string);
        dt.Columns.Add(dc2);

        DataColumn dc3 = new DataColumn();
        dc3.ColumnName = "BookAuthor";
        dc3.DataType = typeof(string);
        //this line make DataColumn default value 'author not found'
        dc3.DefaultValue = "author not found";
        dc3.AllowDBNull = false;
        dt.Columns.Add(dc3);

        dt.Rows.Add(new object[] { 1, "HTML5 Step by Step", "Faithe Wempen" });
        dt.Rows.Add(new object[] { 2, "asp.net example ebook", null });
        dt.Rows.Add(new object[] { 3, "Painting the Web", "Shelley Powers" });
        dt.Rows.Add(new object[] { 4, "coldfusion example ebook", null });

        GridView1.DataSource = dt;
        GridView1.DataBind();
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>DataColumn DefaultValue - How to create data column with default value in ado.net</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h2 style="color:DarkBlue; font-style:italic;">
            DataColumn DefaultValue - How to create
            <br /> data column with default value in ado.net
        </h2>
        <hr width="500" align="left" color="CornFlowerBlue" />
        <asp:GridView 
            ID="GridView1"
            runat="server"
            BorderColor="Snow"
            ForeColor="Snow"
            Width="550"
            >
            <HeaderStyle BackColor="Magenta" ForeColor="Snow" Height="30" />
            <RowStyle BackColor="SandyBrown" ForeColor="Maroon" />
            <AlternatingRowStyle BackColor="Wheat" ForeColor="Maroon" />
        </asp:GridView>
        <br />
        <asp:Button 
            ID="Button1"
            runat="server"
            OnClick="Button1_Click"
            Text="Populate GridView"
            Height="45"
            Font-Bold="true"
            ForeColor="DodgerBlue"
            />
    </div>
    </form>
</body>
</html>
More c# examples