Waghmare says:
var ddlIdType = (DropDownList)e.Row.FindControl("drpID_Type");
        SqlCommand cmd = new SqlCommand("Select * from MstBooking_Mode", hmcon);
        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = cmd;
        DataSet ds = new DataSet();
        da.Fill(ds);
        ddlIdType.DataSource = ds;
        ddlIdType.DataTextField = "Description";
        ddlIdType.DataValueField = "ID";
        ddlIdType.DataBind();
        ddlIdType.Items.Insert(0, new ListItem("Please Select"));
Change with the below code.
if (e.Row.RowType == DataControlRowType.Footer)
{
    DropDownList ddlIdType = (DropDownList)e.Row.FindControl("drpID_Type");
    SqlCommand cmd = new SqlCommand("Select * from MstBooking_Mode", hmcon);
    SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = cmd;
    DataSet ds = new DataSet();
    da.Fill(ds);
    ddlIdType.DataSource = ds;
    ddlIdType.DataTextField = "Description";
    ddlIdType.DataValueField = "ID";
    ddlIdType.DataBind();
    ddlIdType.Items.Insert(0, new ListItem("Please Select"));
}
Also refer the below sample.
HTML
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" ShowFooter="true"
    OnRowDataBound="OnRowDataBound">
    <Columns>
        <asp:TemplateField HeaderText="Id">
            <ItemTemplate>
                <asp:Label ID="lblId" runat="server" Text='<%# Eval("Id") %>' />
            </ItemTemplate>
            <FooterTemplate>
            </FooterTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Name">
            <ItemTemplate>
                <asp:Label ID="lblName" runat="server" Text='<%# Eval("Name") %>' />
            </ItemTemplate>
            <FooterTemplate>
                <asp:TextBox ID="txtName" runat="server" Text="Test Name" />
            </FooterTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Country">
            <ItemTemplate>
                <asp:Label ID="lblCountry" runat="server" Text='<%# Eval("Country") %>' />
            </ItemTemplate>
            <FooterTemplate>
                <%--<asp:TextBox ID="txtCountry" runat="server" Text="Test Country" />--%>
                <asp:DropDownList ID="ddlCountry" runat="server">
                </asp:DropDownList>
            </FooterTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Action">
            <ItemTemplate>
                <asp:Button Text="Delete" runat="server" OnClick="Delete" CommandArgument='<%# Eval("Id") %>'
                    Width="75px" />
            </ItemTemplate>
            <FooterTemplate>
                <asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="Add" Width="75px" CommandName="Footer" />
            </FooterTemplate>
        </asp:TemplateField>
    </Columns>
    <EmptyDataTemplate>
        <table>
            <tr>
                <th scope="col">
                    Id
                </th>
                <th scope="col">
                    Name
                </th>
                <th scope="col">
                    Country
                </th>
                <th scope="col">
                    Action
                </th>
            </tr>
            <tr>
                <td>
                </td>
                <td>
                    <asp:TextBox ID="txtName" runat="server" Text="Test Country" />
                </td>
                <td>
                    <%--<asp:TextBox ID="txtCountry" runat="server" Text="Test Country" />--%>
                    <asp:DropDownList ID="ddlCountry" runat="server">
                    </asp:DropDownList>
                </td>
                <td>
                    <asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="Add" Width="75px" CommandName="EmptyDataTemplate" />
                </td>
            </tr>
        </table>
    </EmptyDataTemplate>
</asp:GridView>
C#
protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        DataTable dt = new DataTable();
        dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id"), new DataColumn("Name"), new DataColumn("Country") });
        dt.Rows.Add(1, "John Hammond", "USA");
        dt.Rows.Add(2, "Mudassar Khan", "India");
        dt.Rows.Add(3, "Suzanne Mathews", "France");
        dt.Rows.Add(4, "Robert Schidner", "UK");
        GridView1.DataSource = dt;
        GridView1.DataBind();
        ViewState["Data"] = dt;
    }
}
protected void Add(object sender, EventArgs e)
{
    Control control = null;
    if (GridView1.FooterRow != null)
    {
        control = GridView1.FooterRow;
    }
    else
    {
        control = GridView1.Controls[0].Controls[0];
    }
    string name = (control.FindControl("txtName") as TextBox).Text.Trim();
    string country = (control.FindControl("ddlCountry") as DropDownList).SelectedItem.Text.Trim();
    if (country.ToLower() == "please select")
    {
        ClientScript.RegisterClientScriptBlock(this.GetType(), "", "alert('Select country to add')", true);
    }
    else
    {
        DataTable dt = ViewState["Data"] as DataTable;
        int lastId;
        if (dt.Rows.Count == 0)
        {
            lastId = 1;
            dt.Rows.Add(lastId, name, country);
        }
        else
        {
            lastId = Convert.ToInt32(dt.Rows[dt.Rows.Count - 1]["Id"].ToString());
            dt.Rows.Add(lastId + 1, name, country);
        }
        GridView1.DataSource = dt;
        GridView1.DataBind();
        ViewState["Data"] = dt;
    }
}
protected void Delete(object sender, EventArgs e)
{
    string id = ((sender as Button)).CommandArgument;
    DataTable dt = ViewState["Data"] as DataTable;
    DataRow dr = dt.Select("Id=" + id)[0];
    dt.Rows.Remove(dr);
    GridView1.DataSource = dt;
    GridView1.DataBind();
    ViewState["Data"] = dt;
}
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Id"), new DataColumn("Name") });
    dt.Rows.Add(1, "India");
    dt.Rows.Add(2, "USA");
    dt.Rows.Add(3, "Canada");
    dt.Rows.Add(4, "Brazil");
    DropDownList ddlIdType = new DropDownList();
    if (e.Row.RowType == DataControlRowType.Footer)
    {
        ddlIdType = (DropDownList)e.Row.FindControl("ddlCountry");
    }
    if (e.Row.RowType == DataControlRowType.EmptyDataRow)
    {
        ddlIdType = (DropDownList)e.Row.FindControl("ddlCountry");
    }
    ddlIdType.DataSource = dt;
    ddlIdType.DataTextField = "Name";
    ddlIdType.DataValueField = "Id";
    ddlIdType.DataBind();
    ddlIdType.Items.Insert(0, new ListItem("Please Select"));
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not Me.IsPostBack Then
        Dim dt As New DataTable()
        dt.Columns.AddRange(New DataColumn(2) {New DataColumn("Id"), New DataColumn("Name"), New DataColumn("Country")})
        dt.Rows.Add(1, "John Hammond", "USA")
        dt.Rows.Add(2, "Mudassar Khan", "India")
        dt.Rows.Add(3, "Suzanne Mathews", "France")
        dt.Rows.Add(4, "Robert Schidner", "UK")
        GridView1.DataSource = dt
        GridView1.DataBind()
        ViewState("Data") = dt
    End If
End Sub
Protected Sub Add(sender As Object, e As EventArgs)
    Dim control As Control = Nothing
    If GridView1.FooterRow IsNot Nothing Then
        control = GridView1.FooterRow
    Else
        control = GridView1.Controls(0).Controls(0)
    End If
    Dim name As String = TryCast(control.FindControl("txtName"), TextBox).Text.Trim()
    Dim country As String = TryCast(control.FindControl("ddlCountry"), DropDownList).SelectedItem.Text.Trim()
    If country.ToLower() = "please select" Then
        ClientScript.RegisterClientScriptBlock(Me.[GetType](), "", "alert('Select country to add')", True)
    Else
        Dim dt As DataTable = TryCast(ViewState("Data"), DataTable)
        Dim lastId As Integer
        If dt.Rows.Count = 0 Then
            lastId = 1
            dt.Rows.Add(lastId, name, country)
        Else
            lastId = Convert.ToInt32(dt.Rows(dt.Rows.Count - 1)("Id").ToString())
            dt.Rows.Add(lastId + 1, name, country)
        End If
        GridView1.DataSource = dt
        GridView1.DataBind()
        ViewState("Data") = dt
    End If
End Sub
Protected Sub Delete(sender As Object, e As EventArgs)
    Dim id As String = TryCast(sender, Button).CommandArgument
    Dim dt As DataTable = TryCast(ViewState("Data"), DataTable)
    Dim dr As DataRow = dt.[Select](Convert.ToString("Id=") & id)(0)
    dt.Rows.Remove(dr)
    GridView1.DataSource = dt
    GridView1.DataBind()
    ViewState("Data") = dt
End Sub
Protected Sub OnRowDataBound(sender As Object, e As GridViewRowEventArgs)
    Dim dt As New DataTable()
    dt.Columns.AddRange(New DataColumn(1) {New DataColumn("Id"), New DataColumn("Name")})
    dt.Rows.Add(1, "India")
    dt.Rows.Add(2, "USA")
    dt.Rows.Add(3, "Canada")
    dt.Rows.Add(4, "Brazil")
    Dim ddlIdType As New DropDownList()
    If e.Row.RowType = DataControlRowType.Footer Then
        ddlIdType = DirectCast(e.Row.FindControl("ddlCountry"), DropDownList)
    End If
    If e.Row.RowType = DataControlRowType.EmptyDataRow Then
        ddlIdType = DirectCast(e.Row.FindControl("ddlCountry"), DropDownList)
    End If
    ddlIdType.DataSource = dt
    ddlIdType.DataTextField = "Name"
    ddlIdType.DataValueField = "Id"
    ddlIdType.DataBind()
    ddlIdType.Items.Insert(0, New ListItem("Please Select"))
End Sub
Screeenshot
