This way:
HTML:
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"
runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" ItemStyle-Width="150" />
<asp:BoundField DataField="City" HeaderText="City" ItemStyle-Width="150" />
</Columns>
</asp:GridView>
<asp:Button runat="server" Text="Save" OnClick="Save" />
</div>
</form>
C#:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Name", typeof(string)),
new DataColumn("City",typeof(string)) });
dt.Rows.Add("Mudassar Khan", "Mumbai");
dt.Rows.Add("John Hammond", "Chicago");
dt.Rows.Add("Sanjay Singh", "Delhi");
dt.Rows.Add("John Hammond", "Chicago");
dt.Rows.Add("Sanjay Singh", "Delhi");
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
protected void Save(object sender, EventArgs e)
{
int count = 0;
int notInsertedCount = 0;
ViewState["Count"] = count;
ViewState["NotInsertedCount"] = notInsertedCount;
foreach (GridViewRow row in this.GridView1.Rows)
{
string strConnString = ConfigurationManager.ConnectionStrings["Constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(strConnString))
{
using (SqlCommand cmd = new SqlCommand("InsertUsers"))
{
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Name", row.Cells[0].Text);
cmd.Parameters.AddWithValue("@City", row.Cells[1].Text);
con.Open();
bool success = Convert.ToBoolean(cmd.ExecuteScalar());
if (success)
{
count = Convert.ToInt32(ViewState["Count"]);
count++;
ViewState["Count"] = count;
}
else
{
notInsertedCount = Convert.ToInt32(ViewState["NotInsertedCount"]);
notInsertedCount++;
ViewState["NotInsertedCount"] = notInsertedCount;
}
con.Close();
}
}
}
string msg = string.Format("Inserted count : {0} , Duplicate Not Inserted count :{1}", count, notInsertedCount);
ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('" + msg + "')", true);
}
Namespace:
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
Stored Procedure:
CREATE PROCEDURE InsertUsers
@Name VARCHAR(100),
@City VARCHAR(30)
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS(SELECT * FROM tblUsers WHERE Name = @Name)
BEGIN
SELECT 'FALSE'
END
ELSE
BEGIN
INSERT INTO [Sample].[dbo].[tblUsers]
([Name]
,[City])
VALUES
(@Name
,@City)
SELECT 'TRUE'
END
END
GO
Table:
CREATE TABLE [dbo].[tblUsers](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](100) NULL,
[City] [varchar](30) NULL,
CONSTRAINT [PK_tblUsers] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Images:

Thank You.