Dear Azim,
Good day, i had write and modified a code in your previous post
http://www.aspforums.net/Threads/140879/Dynamically-add-N-Rows-to-GridView-and-choose-N-from-TextBox-in-ASPNet/
now i want insert the data in SQL Server 2008 database, but show an error. kindly advise, thank you.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Collections;
using System.Configuration;
using System.Web.Security;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Text;
using System.IO;
namespace acmkweb.MM
{
public partial class WebFormTest : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
}
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
}
private void BindGrid(int rowcount)
{
int numbers = int.Parse(this.WMQty.Text.Trim());
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("QUANTITY", typeof(String)));
dt.Columns.Add(new System.Data.DataColumn("SparePart Serial Number", typeof(String)));
if (ViewState["CurrentData"] != null)
{
for (int i = 0; i < rowcount + 1; i++)
{
dt = (DataTable)ViewState["CurrentData"];
if (dt.Rows.Count > 0)
{
dr = dt.NewRow();
dr[0] = dt.Rows[0][0].ToString();
}
}
dr = dt.NewRow();
dr[0] = WMQty.Text;
dr[1] = WMCSerialNum.Text;
dt.Rows.Add(dr);
}
else
{
dr = dt.NewRow();
dr[0] = WMQty.Text;
dr[1] = WMCSerialNum.Text;
dt.Rows.Add(dr);
}
// If ViewState has a data then use the value as the DataSource
if (ViewState["CurrentData"] != null)
{
GridView1.DataSource = (DataTable)ViewState["CurrentData"];
GridView1.DataBind();
}
else
{
// Bind GridView with the initial data assocaited in the DataTable
GridView1.DataSource = dt;
GridView1.DataBind();
}
// Store the DataTable in ViewState to retain the values
ViewState["CurrentData"] = dt;
}
protected void WMAdd_Click(object sender, EventArgs e)
{
GridViewFE.Visible = true;
int numbers = int.Parse(this.WMQty.Text.Trim());
string serialNumber = this.WMCSerialNum.Text.Trim();
string newSerialNumber = serialNumber.Substring(0, serialNumber.Length - 2);
//Here i am adding label if you dont want it then comment till end of for loop
int cellCount = this.GridView1.Rows[0].Cells.Count;
int rowsCount = this.GridView1.Rows.Count;
foreach (GridViewRow row in this.GridView1.Rows)
{
Label label = new Label();
label.ID = newSerialNumber + (Convert.ToInt32(row.RowIndex + 1)).ToString();
label.Text = newSerialNumber + (Convert.ToInt32(row.RowIndex + 1)).ToString();
label.Attributes.Add("runat", "server");
label.CssClass = "Color";
row.Cells[0].Controls.Add(label);
}
foreach (GridViewRow row in this.GridView1.Rows)
{
TextBox textBox = new TextBox();
textBox.ID = newSerialNumber + (Convert.ToInt32(row.RowIndex + 1)).ToString();
// textBox.Text = newSerialNumber + (Convert.ToInt32(row.RowIndex + 1)).ToString();
textBox.Attributes.Add("runat", "server");
// textBox.BackColor = Color.Pink;
row.Cells[1].Controls.Add(textBox);
}
// Check if the ViewState has a data assoiciated within it.
if (ViewState["CurrentData"] != null)
{
DataTable dt = (DataTable)ViewState["CurrentData"];
int count = dt.Rows.Count;
BindGrid(count);
}
else
{
BindGrid(1);
}
WMQty.Text = string.Empty;
WMCSerialNum.Text = string.Empty;
WMQty.Focus();
WMCSerialNum.Focus();
}
protected void WMSubmit_Click(object sender, EventArgs e)
{
foreach (GridViewRow oItem in GridView1.Rows)
{
string str1 = oItem.Cells[1].Text;
string str2 = oItem.Cells[2].Text;
insertData(str1, str2);
}
Response.Redirect("EMMS_Part_Requis.aspx?stat=insert");
}
public void insertData(string str1, string str2)
{
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["CIMProRPT01ConnectionString"].ConnectionString);
string sql = "INSERT INTO [CIMProRPT01].[dbo].[WM_FEDETAILS] (SerialNum, Qty) VALUES ('" + str1 + "','" + str2 + "')";
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
cmd.ExecuteNonQuery();
con.Close();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
DataTable dt = (DataTable)ViewState["CurrentData"];
dt.Rows[e.RowIndex].Delete();
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
}
