I have used here JQuery for showing the Confirm and alert.
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function () {
$("a span").click(function () {
if ($(this).context.innerHTML == "Approved!") {
alert("Cannot changed");
return false;
}
else {
if (confirm("Do you want to save data?")) {
return;
} else {
return false;
}
}
});
});
</script>
<style type="text/css">
.rounded_corners
{
border: 1px solid #A1DCF2;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
border-radius: 8px;
overflow: hidden;
}
.rounded_corners td, .rounded_corners th
{
border: 1px solid #A1DCF2;
font-family: Arial;
font-size: 10pt;
text-align: center;
}
.rounded_corners table table td
{
border-style: none;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<div class="rounded_corners" style="width: 300px">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" Width="300"
DataKeyNames="ID" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"
RowStyle-BackColor="#A1DCF2" AlternatingRowStyle-BackColor="White" RowStyle-ForeColor="#3A3A3A">
<Columns>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblName" Text='<%# Eval("Name") %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:LinkButton ID="lnkApprove1" runat="server" OnClick="ChangeStatus">
<asp:Label ID="lblStatus" runat="server" Text='<%# Eval("Status").ToString() == "0" ? "Approve?" : "Approved!" %>'></asp:Label></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</div>
</form>
</body>
</html>
Namespace:
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
C#:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.PopulateGridView();
}
}
protected void ChangeStatus(object sender, EventArgs e)
{
GridViewRow row = (sender as LinkButton).NamingContainer as GridViewRow;
int id = Convert.ToInt32(this.GridView1.DataKeys[row.RowIndex].Value);
string name = (row.FindControl("lblName") as Label).Text;
string status = (row.FindControl("lblStatus") as Label).Text;
if (status == "Approve?")
{
this.HolidayApproval(id, name);
Response.Redirect(Request.Url.AbsoluteUri);
}
}
private void HolidayApproval(int id, string name)
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("UPDATE HolidaysApproval SET Status = @Status WHERE ID = @Id AND Name = @Name", conn))
{
cmd.Parameters.AddWithValue("@Status", 1);
cmd.Parameters.AddWithValue("@Id", id);
cmd.Parameters.AddWithValue("@Name", name);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
private void PopulateGridView()
{
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand("SELECT * FROM HolidaysApproval", conn))
{
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataSet ds = new DataSet();
da.Fill(ds);
this.GridView1.DataSource = ds;
this.GridView1.DataBind();
}
}
}
}
SQL:
CREATE TABLE [dbo].[HolidaysApproval](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
[Status] [int] NOT NULL,
CONSTRAINT [PK_HolidaysApproval] 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
Thank You.