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:
<%@ 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>
<%----%>
<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 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="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:
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";
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.