Thursday, 20 November 2014

Add and Delete Row Manually To Gridview

No comments




.ASPX


<asp:GridView ID="GridView1" ShowFooter="True" runat="server"  AutoGenerateColumns="False" ForeColor="#333333" OnRowDataBound="GridView1_RowDataBound">                                                    
                                <Columns>
                                    <asp:TemplateField HeaderText="Sr No.">
                                        <FooterTemplate>
                                            <asp:Button ID="BtnAdd" runat="server" OnClick="Add_Click"      Text="Add Row"/>
                                        </FooterTemplate>
                                        <ItemTemplate>
                                            <%# Container.DataItemIndex+1 %>                                         
                                        </ItemTemplate>
                                        <HeaderStyle BorderColor="Black" ForeColor="White" />
                                        <ItemStyle Width="5%" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Name">
                                        <ItemTemplate>
                                            <asp:DropDownList ID="DropName" runat="server" DataTextField="InvDecs" DataValueField="InvID"
                                                TabIndex="8" Width="161px">                                               
                                            </asp:DropDownList>                                                                                   
                                        </ItemTemplate>
                                        <HeaderStyle BorderColor="Black" ForeColor="White" />
                                        <ItemStyle Width="20%" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Quantity">
                                        <ItemTemplate>
                                            <asp:TextBox ID="txtqty" runat="server"></asp:TextBox>                                                                                          
                                        </ItemTemplate>                                     
                                    </asp:TemplateField>                                                                     
                                    <asp:TemplateField>                                      
                                        <ItemTemplate>
                                            <asp:LinkButton ID="lkDelete" runat="server" onclick="Delete_Click">Delete</asp:LinkButton>
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                </Columns>                             
                            </asp:GridView>



.CS


protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
             DataTable dt = (DataTable)ViewState["DT"];
            CreateDataTable();
            RowAdd();
          }
  }


public void RowAdd()
    {
        DataTable dt = new DataTable();
        dt.Rows.Add();

        GridView1.DataSource = dt;
        GridView1.DataBind();

        dt = new DataTable();     
        dt.Columns.Add("Name");
        dt.Columns.Add("Qty");

        DataRow dr = dt.NewRow();
        dr["Name"] = string.Empty;
        dr["Qty"] = string.Empty;
             
        dt.Rows.Add(dr);
        ViewState["DT"] = dt;
        GridView1.DataSource = dt;
        GridView1.DataBind();

        if (GridView1.Rows.Count == 1)
        {
            foreach (GridViewRow grow in GridView1.Rows)
            {
                GridView1.Columns[3].Visible = false;
            }
        }
        else
        {
            foreach (GridViewRow grow in GridView1.Rows)
            {
                GridView1.Columns[3].Visible = true;
            }
        }
    }

// For Message
 public void msgbox(string message)
    {
        Label lbl = new Label();
        lbl.Text = "<Script> alert (' " + message + "') </Script>";
        this.Page.Controls.Add(lbl);
    }

//Get Max Value Of Column

 public void GetMax()
    {
        SqlDataReader dr;
        SqlCommand cmd = new SqlCommand("select max(SrNo) from MyTable", con);
        con.Open();
        dr = cmd.ExecuteReader();

        if (dr.Read())
        {
            string d = dr[0].ToString();
            if (d == "")
            {
                ViewState["Max"] = "1";//set the value in viewstate which name is id
            }
            else
            {
               int r = Convert.ToInt32(dr[0].ToString());
                r = r + 1;
                ViewState["Max"] = r.ToString();
            }
        }
        dr.Close();
        cmd.Dispose();
        con.Close();
    }

//Row DataBound Event To Bind Gridview

 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DropDownList dropName = (DropDownList)e.Row.FindControl("DropName");
            dropName.DataSource = dl.GridviewBind(bl);
            dropName.DataBind();
            dropName.Items.Insert(0, new ListItem("----Select----", "0"));
        }
    }


protected void CreateDataTable()
    {
        int rowIndex = 0;
        if (ViewState["DT"] != null)
        {
            dt = (DataTable)ViewState["DT"];
            DataRow dr1 = null;

            if (dt.Rows.Count > 0)
            {
                for (int i = 1; i <= dt.Rows.Count; i++)
                {             
                    DropDownList DropName= (DropDownList)GridView1.Rows[rowIndex].Cells[0].FindControl("DropName");
                    TextBox Qty = (TextBox)GridView1.Rows[rowIndex].Cells[0].FindControl("txtqty");

                    dr1 = dt.NewRow();
                    dt.Rows[i - 1]["Name"] = DropName.SelectedValue;
                    dt.Rows[i - 1]["Qty"] = Qty.Text;
                    rowIndex++;
                }
                dt.Rows.Add(dr1);
                ViewState["DT"] = dt;
                GridView1.DataSource = dt;
                GridView1.DataBind();
                if (GridView1.Rows.Count > 0)
                {
                    foreach (GridViewRow grow in GridView1.Rows)
                    {
                        GridView1.Columns[3].Visible = true;
                    }
                }
            }
        }
    }

 public void AddData()
    {
        int rowIndex = 0;
        if (ViewState["DT"] != null)
        {
            DataTable dt2 = (DataTable)ViewState["DT"];
            if (dt2.Rows.Count > 0)
            {
                for (int i = 0; i < dt2.Rows.Count; i++)
                {
                    DataRow drValues = dtValues.NewRow();

DropDownList DropName= (DropDownList)GridView1.Rows[rowIndex].Cells[0].FindControl("DropName");
               TextBox Qty = (TextBox)GridView1.Rows[rowIndex].Cells[0].FindControl("txtqty");

                    Qty.Text = dt2.Rows[i]["Qty"].ToString();                
                    DropName.SelectedValue = dt2.Rows[i]["Name"].ToString();
                    rowIndex++;
                }
            }
        }
    }
//Add Button
 protected void Add_Click(object sender, EventArgs e)
    {
        CreateDataTable();
        AddData();
    }

//Delete Row
protected void lkDelete_Click(object sender, EventArgs e)
    {
        LinkButton lk = (LinkButton)sender;
        GridViewRow gr = (GridViewRow)lk.NamingContainer;
        DataTable dt = (DataTable)ViewState["DT"];
        DataRow drow = dt.Rows[gr.RowIndex];
        drow.Delete();
        GridView1.DataSource = dt;
        GridView1.DataBind();
        if (GridView1.Rows.Count == 1)
        {
            foreach (GridViewRow grow in GridView1.Rows)
            {
                GridView1.Columns[3].Visible = false;
            }
        }
        else
        {
            foreach (GridViewRow grow in GridView1.Rows)
            {
                GridView1.Columns[3].Visible = true;
            }
        }

        for (int i = 0; i < dt.Rows.Count; i++)
        {
            TextBox Qty = (TextBox)GridView1.Rows[i].FindControl("txtqty");
            DropDownList DropName= (DropDownList)GridView1.Rows[i].FindControl("DropName");

            Qty.Text = dt.Rows[i]["Qty"].ToString();
            if (string.IsNullOrEmpty(dt.Rows[i]["MatId"].ToString()) == false)
            {
               DropName.SelectedValue = dt.Rows[i]["Name"].ToString();
            }
         }
        ViewState["DT"] = dt;
    }

//Update Button Click To Get Record From Gridview

protected void Edit_Click(object sender, EventArgs e)
    {
        Save.Text = "Update";
        LinkButton G1 = (LinkButton)sender;
        GridViewRow gr = (GridViewRow)G1.NamingContainer;

        Label ID = (Label)gvRatio.Rows[gr.RowIndex].FindControl("lblid");
        bl.Sr = Convert.ToInt32(ID.Text);
        ViewState["Id"] = ID.Text;
        DataTable dt1 = new DataTable();
        dt1 = dl.GridviewsBind(bl);


        if (dt1.Rows.Count > 0)
        {           
            GridView1.DataSource = dt1;
            GridView1.DataBind();

            if (GridView1.Rows.Count == 1)
            {
                foreach (GridViewRow grow in GridView1.Rows)
                {
                    GridView1.Columns[3].Visible = false;
                }
            }
            else
            {
                foreach (GridViewRow grow in GridView1.Rows)
                {
                    GridView1.Columns[3].Visible = true;
                }
            }

            dt = new DataTable();
            dt.Columns.Add("Name");
            dt.Columns.Add("Qty");  
            DataRow dr = null;

            for (int i = 0; i < dt1.Rows.Count; i++)
            {
                TextBox Qty = (TextBox)GridView1.Rows[i].FindControl("txtqty");             
                DropDownList DropName= (DropDownList)GridView1.Rows[i].FindControl("DropName");

                dr = dt.NewRow();
                Qty.Text = dt1.Rows[i]["Qty"].ToString();
                DropName.SelectedValue = dt1.Rows[i]["MatId"].ToString();

                dr["DropName"] = dt1.Rows[i]["DropName"].ToString();
                dr["Qty"] = dt1.Rows[i]["Qty"].ToString();             
                dt.Rows.Add(dr);
            }
        }
        ViewState["DT"] = dt;
    }