Click here to Skip to main content
15,902,275 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Sir,

When We are inserting data into database through textbox in gridview. Data is inserting into database properly but issue is that blank testbox is comming in a new row.

I have written the code bellow.

Design file:

XML
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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>Untitled Page</title>
</head>
<body>
    <%--DataKeyNames="Id" --%>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" BackColor="White" Width="100%" BorderColor="#CCCCCC"
            BorderStyle="None" BorderWidth="1px" CellPadding="3"
            AutoGenerateColumns="False" onrowcommand="GridView1_RowCommand">
            <RowStyle ForeColor="#000066" />
            <Columns>
                <%--<asp:TemplateField>

                    <ItemTemplate>
                        <asp:LinkButton ID="lbEdit" CommandArgument='<%#Eval("ID")%>' CommandName="EditRow"
                            ForeColor="#8C4510" runat="server">Edit</asp:LinkButton>
                        <asp:LinkButton ID="lbDelete" CommandArgument='<%#Eval("ID")%>' CommandName="DeleteRow"
                            ForeColor="#8C4510" runat="server" CausesValidation="false">Delete</asp:LinkButton>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:LinkButton ID="lbUpdate" CommandArgument='<%# Eval("ID") %>' CommandName="UpdateRow"
                            ForeColor="#8C4510" runat="server">Update</asp:LinkButton>
                        <asp:LinkButton ID="lbCancel" CommandArgument='<%# Eval("ID") %>' CommandName="CancelUpdate"
                            ForeColor="#8C4510" runat="server" CausesValidation="false">Cancel</asp:LinkButton>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Id" HeaderText="Id" InsertVisible="False" ReadOnly="True"
                    SortExpression="Id" />--%>
                <asp:TemplateField HeaderText="ServerName" SortExpression="GMName">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("GMName") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("GMName") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>

                <asp:TemplateField HeaderText="CheckPointTaskType" SortExpression="CheckPointTaskType">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox6" runat="server" Text='<%# Bind("CheckPointTaskType") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label6" runat="server" Text='<%# Bind("CheckPointTaskType") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>

                 <asp:TemplateField HeaderText="CheckRemark" SortExpression="CheckRemark">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox7" runat="server" Text='<%# Bind("CheckRemark") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label7" runat="server" Text='<%# Bind("CheckRemark") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
               <%-- <asp:TemplateField HeaderText="TaskIdDate" SortExpression="TaskIdDate">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("TaskIdDate") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label2" runat="server" Text='<%# Bind("TaskIdDate") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>--%>
                <asp:TemplateField HeaderText="Space" SortExpression="Space">

                   <ItemTemplate>
                    <asp:TextBox ID="txtSpace" runat="server"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="rfvlInsertSpace" runat="server" ErrorMessage="Space is required!" ControlToValidate="txtSpace"
                        Text="*" ForeColor="Red" ValidationGroup="Insert"></asp:RequiredFieldValidator>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Comments" SortExpression="Comments">
                    <ItemTemplate>
                    <asp:TextBox ID="txtComments" runat="server"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="rfvlInsertComments" runat="server" ErrorMessage="Comments are required!" ControlToValidate="txtComments"
                        Text="*" ForeColor="Red" ValidationGroup="Insert"></asp:RequiredFieldValidator>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Remarks" SortExpression="Remarks">
                    <ItemTemplate>
                    <asp:TextBox ID="txtRemarks" runat="server"></asp:TextBox>
                        <asp:RequiredFieldValidator ID="rfvlInsertRemarks" runat="server" ErrorMessage="Remarks are required!" ControlToValidate="txtRemarks"
                        Text="*" ForeColor="Red" ValidationGroup="Insert"></asp:RequiredFieldValidator>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <FooterStyle BackColor="White" ForeColor="#000066" />
            <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
            <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
        </asp:GridView>
        <asp:GridView ID="GridView2" runat="server" BackColor="White" Width="100%" BorderColor="#CCCCCC"
            BorderStyle="None" BorderWidth="1px" CellPadding="3"
            AutoGenerateColumns="False" onrowcommand="GridView1_RowCommand">
            <RowStyle ForeColor="#000066" />
            <Columns>
            </Columns>
            <FooterStyle BackColor="White" ForeColor="#000066" />
            <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
            <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
        </asp:GridView>

        <br />
    </div>
    <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
    <br />
    <br />
    </form>
</body>
</html>




Code Behind file:

C#
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using MySql.Data;
using MySql.Data.MySqlClient;  

public partial class _Default : System.Web.UI.Page 
{
        
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGridViewData();             
        }
    }

    private void BindGridViewData()
    {
        string CS = ConfigurationManager.ConnectionStrings["CheckListConnectionString"].ConnectionString;
        MySqlConnection con = new MySqlConnection(CS);
        string strQuery = "select G.GMName, T.CheckPointTaskType, T.CheckRemark, S.Space, S.Comments, S.Remarks from tblTaskMasterStatus S, tblTaskMaster T, tblGeneralMaster G where S.TaskId=T.Id and T.ServerId=G.ID";
        //string strQuery = "select S.Id, G.GMName, T.CheckPointTaskType, T.CheckRemark, S.TaskIdDate, S.Space, S.Comments, S.Remarks from tblTaskMasterStatus S, tblTaskMaster T, tblGeneralMaster G where S.TaskId=T.Id and T.ServerId=G.ID";
        //string strQuery = "T.Id, select G.GMName, T.CheckPointTaskType, T.CheckRemark from tblTaskMasterStatus S, tblTaskMaster T, tblGeneralMaster G where S.TaskId=T.Id and T.ServerId=G.ID";
        MySqlDataAdapter da = new MySqlDataAdapter(strQuery, con);
        DataSet ds = new DataSet();
        da.Fill(ds);       
        GridView1.DataSource = ds;        
        GridView1.DataBind();        
         
    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        foreach (GridViewRow row in GridView1.Rows)
        {
            
            Decimal Space = Convert.ToDecimal(((TextBox)row.FindControl("txtSpace")).Text);
            string GMName = ((Label)row.FindControl("Label1")).Text; 
            string Comments = ((TextBox)row.FindControl("txtComments")).Text;
            string Remarks = ((TextBox)row.FindControl("txtRemarks")).Text;
            EmployeeDataAccessLayer.InsertEmployee(GMName, Space, Comments, Remarks);            
        }        
        BindGridViewData(); 
    
    }
}

EmployeeDataAccessLayer Class:
public class EmployeeDataAccessLayer
{

    public static List<employee> GetAllTaskMaster()
    {
        List<employee> listEmployees = new List<employee>();

        string CS = ConfigurationManager.ConnectionStrings["CheckListConnectionString"].ConnectionString;
        using (MySqlConnection con = new MySqlConnection(CS))
        {
            MySqlCommand cmd = new MySqlCommand("Select ID, TaskId, TaskIdDate, Space, Comments, Remarks, CheckedBy, Status from tblTaskMasterStatus", con);
            con.Open();
            MySqlDataReader rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                Employee employee = new Employee();
                employee.Id = Convert.ToInt32(rdr["ID"]);
                employee.TaskId = Convert.ToInt32(rdr["TaskId"]);
                employee.TaskIdDate = Convert.ToDateTime(rdr["TaskIdDate"].ToString());
                employee.Space = Convert.ToDecimal(rdr["Space"]);
                employee.Comments = rdr["Comments"].ToString();
                employee.Remarks = rdr["Remarks"].ToString();
                employee.CheckedBy = rdr["CheckedBy"].ToString();
                employee.Status = rdr["Status"].ToString();
                listEmployees.Add(employee);
            }
        }
        return listEmployees;
    }      

    public static int InsertEmployee( string GMName, decimal Space, string Comments, string Remarks)
    {
        string CS = ConfigurationManager.ConnectionStrings["CheckListConnectionString"].ConnectionString;
        using (MySqlConnection con = new MySqlConnection(CS))
        {
            string selectTaskId = "select TaskId from tbltaskmasterstatus where TaskId=(select ServerId from tbltaskmaster where ServerId=(select Id from tblgeneralmaster where GMName=@GMName))";

            MySqlCommand cmdTaskId = new MySqlCommand(selectTaskId, con);
            
            con.Open();
            cmdTaskId.CommandType = CommandType.Text;
            MySqlParameter paramGMName = new MySqlParameter("@GMName", GMName);
            cmdTaskId.Parameters.Add(paramGMName);

            int ResultId = (int)cmdTaskId.ExecuteScalar();                        

            string updateQuery = "Insert into tblTaskMasterStatus (TaskId, Space, Comments, Remarks)" +
                " values (@TaskId, @Space, @Comments, @Remarks)";
            MySqlCommand cmd = new MySqlCommand(updateQuery, con);
            
            MySqlParameter paramSpace = new MySqlParameter("@Space", Space);
            cmd.Parameters.Add(paramSpace);
            MySqlParameter paramComments = new MySqlParameter("@Comments", Comments);
            cmd.Parameters.Add(paramComments);
            MySqlParameter paramRemarks = new MySqlParameter("@Remarks", Remarks);
            cmd.Parameters.Add(paramRemarks);
            
            MySqlParameter paramTaskId = new MySqlParameter("@TaskId", ResultId);
            cmd.Parameters.Add(paramTaskId); 
            
            return cmd.ExecuteNonQuery();
        }
    }
}


Kindly give me solution to insert data into database without generating another textbox on btnSubmit click.
Posted
Updated 26-Mar-14 3:09am
v2

1 solution

Try this:
C#
protected void btnSubmit_Click(object sender, EventArgs e)
{
   foreach (GridViewRow row in GridView1.Rows)
   {
      Decimal Space = Convert.ToDecimal(((TextBox)row.FindControl("txtSpace")).Text);
      string GMName = ((Label)row.FindControl("Label1")).Text; 
      string Comments = ((TextBox)row.FindControl("txtComments")).Text;
      string Remarks = ((TextBox)row.FindControl("txtRemarks")).Text;

      //here you can add a condition when should insert your data into the database
      if(GMName != string.Empty)
      {      
          EmployeeDataAccessLayer.InsertEmployee(GMName, Space, Comments, Remarks); 
      }
   } 

   BindGridViewData(); 
}
 
Share this answer
 
Comments
chaurasiashankar 27-Mar-14 8:25am    
Sir,

Same issue is coming while have added if condition. Textboxes automatically adding in a new row.

I think templatefield is looping again & again in a sample gridview.
norbitrial 27-Mar-14 11:06am    
On every single clicking to the button add one more row to the gridview or the gridview has only one plus row after clicking?

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900