How To find control inside EmptyTemplate

In this post, I will show. How to add a new row in gridview. How to find control inside EmptyDataTemplate

<%@ Page Language="C#" EnableEventValidation="false" AutoEventWireup="true" CodeBehind="Gridview.aspx.cs"
   Inherits="JQueryTest.Gridview" %>

<%@ Register Src="Grid3S.ascx" TagName="Grid3S" TagPrefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
   <title></title>
</head>
<body>
   <form id="form1" runat="server">
   <div>
       <asp:GridView ID="grdPrice" DataKeyNames="ID" runat="server" AutoGenerateColumns="False"
           Width="200px" ShowHeader="False" OnRowCommand="grdPrice_RowCommand" OnRowDataBound="grdPrice_RowDataBound"
           CellPadding="4" ForeColor="#333333" GridLines="None">
           <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
           <Columns>
               <asp:TemplateField>
                   <FooterTemplate>
                       <asp:LinkButton ID="LinkButton1" runat="server" CommandName="Insert">Insert</asp:LinkButton>
                   </FooterTemplate>
               </asp:TemplateField>
               <asp:TemplateField HeaderText="3S">
                   <ItemTemplate>
                       <asp:Label ID="lbl3S" runat="server" Text='<%#Eval("Name")%>'></asp:Label>
                   </ItemTemplate>
                   <FooterTemplate>
                       <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                   </FooterTemplate>
               </asp:TemplateField>
           </Columns>
           <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
           <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
           <EmptyDataTemplate>
               <asp:TextBox ID="txtEmptyData" runat="server"></asp:TextBox>
           </EmptyDataTemplate>
           <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
           <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
           <EditRowStyle BackColor="#999999" />
           <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
       </asp:GridView>
       <asp:Button ID="btnDelete" runat="server" Text="Delete" OnClick="btnDelete_Click" />
       <asp:Button ID="btnAdd" runat="server" Text="Add More" OnClick="btnAdd_Click" />
   </div>
   </form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace JQueryTest
{
    public partial class Gridview : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindGridView();
            }
        }
        private void BindGridView()
        {
            DataTable dt = new DataTable();
            dt = (DataTable)Session["MyDataSource"];
            grdPrice.DataSource = GetDataSource();
            grdPrice.DataBind();

        }
        protected DataTable GetDataSource()
        {
            const string key = "MyDataSource";
            DataTable dt = Session[key] as DataTable;
            if (dt == null)
            {
                dt = new DataTable();
                dt.Columns.Add("ID", typeof(int)).AutoIncrement = true;
                dt.Columns.Add("Name", typeof(string));
                DataColumn[] keys = new DataColumn[2];
                keys[0] = dt.Columns["ID"];
                dt.PrimaryKey = keys;

                dt.Rows.Add("1", "first object");
                dt.Rows.Add("2", "second object");
                Session[key] = dt;

            }
            return dt;
        }
        protected void AddData()
        {
            DataTable dt = (DataTable)Session["MyDataSource"];
            DataRow rw = dt.NewRow();
            TextBox txt = (TextBox)grdPrice.FooterRow.Cells[1].FindControl("TextBox2");
            if (txt.Text != "")
            {


                rw[1] = txt.Text;
                dt.Rows.Add(rw);
                Session["MyDataSource"] = dt;
            }
        }
        protected void grdPrice_RowCommand(object sender, GridViewCommandEventArgs e)
        {

            if (e.CommandName == "Insert")
            {
                AddData();
                grdPrice.ShowFooter = false;
                BindGridView();
                btnAdd.Enabled = true;

            }
        }

        protected void btnAdd_Click(object sender, EventArgs e)
        {
            GridViewRow gvr;
            if (grdPrice.Rows.Count == 0)
            {
                Table tbl = (Table)grdPrice.Controls[0];
                gvr = (GridViewRow)tbl.Controls[0];
                DataTable dt = (DataTable)Session["MyDataSource"];
                DataRow rw = dt.NewRow();
                TableCell cell = gvr.Cells[0];
                TextBox txtEmptyData = (TextBox)cell.FindControl("txtEmptyData");
                rw[1] = txtEmptyData.Text;
                dt.Rows.Add(rw);
                Session["MyDataSource"] = dt;
                grdPrice.ShowFooter = false;
                BindGridView();

            }
            else
            {
                // when there are rows returned you can reference the gridviewrow by grabbing the footerrow
                gvr = (GridViewRow)grdPrice.FooterRow;
                grdPrice.ShowFooter = true;
                BindGridView();
                btnAdd.Enabled = false;
            }



        }
        DataKey key;
        protected void grdPrice_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes["onmouseover"] = "this.style.cursor='hand';this.style.textDecoration='none';";
                e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';";
                e.Row.Attributes["onclick"] = ClientScript.GetPostBackClientHyperlink(grdPrice, "Select$" + e.Row.RowIndex);
            }

        }

        protected void btnDelete_Click(object sender, EventArgs e)
        {

            try
            {

                GridViewRow gv = grdPrice.SelectedRow;

                key = grdPrice.DataKeys[gv.RowIndex];
                DataTable dt = (DataTable)Session["MyDataSource"];

                DataRow rw = dt.Rows.Find(int.Parse(key.Value.ToString()));
                rw.Delete();
                dt.AcceptChanges();
                BindGridView();
                grdPrice.SelectedIndex = -1;

            }
            catch
            {
                BindGridView();
            }

        }

    }
}

Post a Comment

Please do not post any spam link in the comment box😊

Previous Post Next Post

Blog ads

CodeGuru