Stored Procedure to
perform Update operation
CREATE PROCEDURE SP_Update_User
-- Add the parameters for the stored procedure here
@User_ID int,@Fname varchar(200),@Lname varchar(200),@Email varchar(500),@ActiveDate datetime,@gender varchar(50),@city varchar(200)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
update [dbo].[User]
set First_Name=@Fname, Last_Name=@Lname, Email=@Email, Active_Date=@ActiveDate,Gender=@gender,City=@city
where User_ID=@User_ID
END
GO
Gridview design for
update operations
<asp:GridView ID="gridData" runat="server" AutoGenerateColumns="False" Width="100%" CellPadding="4"
ForeColor="#333333" GridLines="None" AutoGenerateEditButton="True"
OnRowCancelingEdit="gridData_RowCancelingEdit"
OnRowEditing="gridData_RowEditing"
OnRowUpdating="gridData_RowUpdating"
OnRowDataBound="gridData_RowDataBound" >
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField >
<HeaderTemplate>
<asp:Label ID="lblUser_ID" runat="server" Text="User ID"
></asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblDataUser_ID" runat="server"
Text='<%#Eval("User_ID") %>' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate>
<asp:Label ID="lblFirst_Name" runat="server" Text="First Name"
></asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblDataFirst_Name" runat="server"
Text='<%#Eval("First_Name") %>' ></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtDataFirst_Name" runat="server"
Text='<%#Eval("First_Name") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate>
<asp:Label ID="lblLast_Name" runat="server" Text="Last Name"
></asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblDataLast_Name" runat="server"
Text='<%#Eval("Last_Name") %>' ></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtDataLast_Name" runat="server"
Text='<%#Eval("Last_Name") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate>
<asp:Label ID="lblEmail" runat="server" Text="Email"
></asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblDataEmail" runat="server" Text='<%#Eval("Email")
%>' ></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtDataEmail" runat="server"
Text='<%#Eval("Email") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate>
<asp:Label ID="lblActive_Date" runat="server" Text="Active Date"
></asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblDataActive_Date" runat="server" Text=
'<%#Eval("Active_Date") %>' ></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtDataActive_Date" runat="server"
Text='<%#Eval("Active_Date") %>'></asp:TextBox>
<asp:CalendarExtender ID="CalendarExtender1" runat="server"
TargetControlID="txtDataActive_Date"
SelectedDate='<%#Eval("Active_Date") %>'>
</asp:CalendarExtender>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate>
<asp:Label ID="lblGender" runat="server" Text="Gender"
></asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblDataGender" runat="server"
Text='<%#Eval("Gender") %>' ></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlGender" runat="server" >
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<HeaderTemplate>
<asp:Label ID="lblCity" runat="server" Text="City" ></asp:Label>
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="lblDataCity" runat="server" Text='<%#Eval("City")
%>' ></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtDataCity" runat="server" Text='<%#Eval("City") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>
Code Behind
1. Show data on button click event
protected void btnGetData_Click(object sender, EventArgs e)
{
GetDt();
}
We have to bind gridview several times, so create a method for binding
data in gridview i.e. GetDt()
private void GetDt()
{
clsConnect connect = new clsConnect();
DataSet ds = connect.getUserData();
gridData.DataSource = ds.Tables[0];
gridData.DataBind();
}
Details of Class Method getUserData()
public DataSet getUserData()
{
ds = new DataSet();
try
{
SqlConnection con=new SqlConnection(connectionString);
con.Open();
SqlDataAdapter da = new SqlDataAdapter("select * from
[dbo].[User]", con);
da.Fill(ds);
con.Close();
}
catch (Exception ex)
{
//throw;
}
return ds;
}
For Connection details visit earlier posts
2. Gridview Editing event
We
have maintain earlier Gender field value to be show in update method as previous
value.
Hence Session["genderVal"] in code below
protected void gridData_RowEditing(object sender, GridViewEditEventArgs e)
{
gridData.EditIndex = e.NewEditIndex;
//gender
Label thisGender = (Label)gridData.Rows[e.NewEditIndex].FindControl("lblDataGender");
string genderVal = thisGender.Text;
Session["genderVal"] = genderVal;
GetDt();
}
3. RowDataBound event: This event is used to
bind fields for controls available in update mode of gridview.
protected void gridData_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (gridData.EditIndex == e.Row.RowIndex &&
e.Row.RowType ==
DataControlRowType.DataRow)
{
try
{
DropDownList ddlGender = (DropDownList)e.Row.FindControl("ddlGender");
if (ddlGender != null)
{
ddlGender.Items.Add("M");
ddlGender.Items.Add("F");
}
//set
selected field
if (Session["genderVal"] != null)
{
for (int i = 0; i <
ddlGender.Items.Count; i++)
{
if
(ddlGender.Items[i].Text.Trim().Equals(Session["genderVal"].ToString()))
{
ddlGender.Items[i].Selected = true;
break;
}
}
}
}
catch (Exception ex)
{
//throw;
}
}
}
4. Update Event
protected void gridData_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
if (e.RowIndex!=-1 &&
gridData.Rows[e.RowIndex].RowType==DataControlRowType.DataRow )
{
try
{
//1.
get PKey field value
Label lblDataUser_ID = (Label)gridData.Rows[e.RowIndex].FindControl("lblDataUser_ID");
int User_ID = Convert.ToInt32(lblDataUser_ID.Text);
//2.
get new values for First_Name Last_Name Email Active_Date Gender City
TextBox txtDataFirst_Name = (TextBox)gridData.Rows[e.RowIndex].FindControl("txtDataFirst_Name");
TextBox txtDataLast_Name = (TextBox)gridData.Rows[e.RowIndex].FindControl("txtDataLast_Name");
TextBox txtDataEmail = (TextBox)gridData.Rows[e.RowIndex].FindControl("txtDataEmail");
TextBox txtDataActive_Date = (TextBox)gridData.Rows[e.RowIndex].FindControl("txtDataActive_Date");
DropDownList ddlGender = (DropDownList)gridData.Rows[e.RowIndex].FindControl("ddlGender");
TextBox txtDataCity = (TextBox)gridData.Rows[e.RowIndex].FindControl("txtDataCity");
//update
Method
clsConnect cc = new clsConnect();
cc.UpdateData(User_ID,
txtDataFirst_Name.Text, txtDataLast_Name.Text, txtDataEmail.Text,
Convert.ToDateTime(txtDataActive_Date.Text),
ddlGender.SelectedItem.Text, txtDataCity.Text);
}
catch (Exception)
{
//throw;
}
}
gridData.EditIndex = -1;
GetDt();
}
5. Update Method
public void UpdateData(int User_ID,string First_Name,string Last_Name,string Email,DateTime Active_Date,string Gender,string City)
{
ds = new DataSet();
try
{
//SP_Update_User
has following parameters
//@User_ID
int,@Fname varchar(200),@Lname varchar(200),@Email
// varchar(500),
//@ActiveDate
datetime,@gender varchar(50),@city varchar(200)
SqlConnection con = new SqlConnection(connectionString);
con.Open();
SqlCommand cmd = new SqlCommand("SP_Update_User", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
SqlParameter UserID = new SqlParameter();
UserID.ParameterName = "@User_ID";
UserID.DbType = DbType.Int32;
UserID.Value = User_ID;
cmd.Parameters.Add(UserID);
SqlParameter Fname = new SqlParameter();
Fname.ParameterName = "@Fname";
Fname.DbType = DbType.String;
Fname.Value = First_Name;
cmd.Parameters.Add(Fname);
SqlParameter Lname = new SqlParameter();
Lname.ParameterName = "@Lname";
Lname.DbType = DbType.String;
Lname.Value = Last_Name;
cmd.Parameters.Add(Lname);
SqlParameter spEmail = new SqlParameter();
spEmail.ParameterName = "@Email";
spEmail.DbType = DbType.String;
spEmail.Value = Email;
cmd.Parameters.Add(spEmail);
SqlParameter ActiveDate = new SqlParameter();
ActiveDate.ParameterName = "@ActiveDate";
ActiveDate.DbType = DbType.DateTime;
ActiveDate.Value = Active_Date;
cmd.Parameters.Add(ActiveDate);
SqlParameter gender = new SqlParameter();
gender.ParameterName = "@gender";
gender.DbType = DbType.String;
gender.Value = Gender;
cmd.Parameters.Add(gender);
SqlParameter city = new SqlParameter();
city.ParameterName = "@city";
city.DbType = DbType.String;
city.Value = City;
cmd.Parameters.Add(city);
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
//
throw;
//
return ds;
}
}
6. Cancel Edit Event
protected void gridData_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
gridData.EditIndex = -1;
GetDt();
}
No comments:
Post a Comment