In my last post I have created SharePoint Provider Hosted APP . You may refer it from here.
In this post I will give more idea regarding CRUD Operation with SharePoint Provider Hosted APP.
I have added bootstrap style and html to improve default look and feel of APP.
Here asset folder contains required CSS and jQuery Files.
To perform CRUD Operation, I have added 2 more forms. AddEmployee.aspx and ViewEmployee.aspx.
To add new Form, Right Click on Pages -> Add -> New Item
It will Open Add New Item Wizard
Select Web Form and click on ADD. This will create AddEmployee.aspx form.Repeat same procedure to create ViewEmployee.aspx page.
Now App contains below pages. After applying jQuery and CSS it looks like as shown in below images.
Default Page
AddEmployee.aspx
ViewEmployees.aspx
To perform CRUD Operation, Create One list named “Employee” on Developer Site.
My Site and List Detail are as below
Site : http://sqlserver:3333/Lists/Employee/AllItems.aspx
List Name: Employee
When User Submit AddEmployee.aspx page it will add an item into Employee List.
Code for Submit Button Event or INSERT list item is as below
private void SaveEmployee() { try { var spContext = SharePointContextProvider.Current.GetSharePointContext(Context); using (var context = spContext.CreateUserClientContextForSPHost()) { Web web = context.Web; List list = web.Lists.GetByTitle("Employee"); ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation(); Microsoft.SharePoint.Client.ListItem newItem = list.AddItem(itemCreateInfo); newItem["Name"] = txtEmployeeName.Text.ToString(); newItem["Designation"] = txtDesignation.Text.ToString(); newItem["Department"] = ddlDepatment.SelectedItem.Text.ToString(); newItem["Address"] = txtAddress.Text.ToString(); newItem["ContactNo"] = txtContactNo.Text.ToString(); newItem["Email"] = txtEmail.Text.ToString(); DateTime dob = DateTime.Parse(txtDOB.Text.ToString()); newItem["DOB"] = dob; newItem.Update(); context.ExecuteQuery(); lblMessage.Text = "Employee Information Added Sucessfully."; lblMessage.ForeColor = System.Drawing.Color.Green; lblMessage.Font.Bold = true; } } catch (Exception ex) { lblMessage.Text = ex.ToString(); } }
Once Item is added into List it will appear on View Employee Page.
Code to display Employees on ViewEmployee Page
private void BindEmployee() { var spContext = SharePointContextProvider.Current.GetSharePointContext(Context); using (var context = spContext.CreateUserClientContextForSPHost()) { Web web = context.Web; List list = web.Lists.GetByTitle("Employee"); CamlQuery caml = new CamlQuery(); Microsoft.SharePoint.Client.ListItemCollection items = list.GetItems(caml); context.Load<List>(list); context.Load<Microsoft.SharePoint.Client.ListItemCollection>(items); context.ExecuteQuery(); DataTable table = new DataTable(); table.Columns.Add("Id"); table.Columns.Add("Name"); table.Columns.Add("Designation"); table.Columns.Add("Department"); table.Columns.Add("Address"); table.Columns.Add("ContactNo"); table.Columns.Add("Email"); table.Columns.Add("DOB"); foreach (Microsoft.SharePoint.Client.ListItem item in items) { DateTime now = Convert.ToDateTime(item["DOB"].ToString()); string date = now.ToLocalTime().ToShortDateString(); table.Rows.Add(item["ID"], item["Name"], item["Designation"], item["Department"], item["Address"], item["ContactNo"], item["Email"], date); } rptContractType.DataSource = table; rptContractType.DataBind(); } }
I have added few items in list and it will available as below.
To Edit an Item user can click on Edit button and update record. Code for Update Button and UPDATE list item is as below.
private void UpdateEmployee() { try { var spContext = SharePointContextProvider.Current.GetSharePointContext(Context); string strEmpID = Request.QueryString["empID"].ToString(); using (var context = spContext.CreateUserClientContextForSPHost()) { Web web = context.Web; List oList = web.Lists.GetByTitle("Employee"); Microsoft.SharePoint.Client.ListItem oListItem = oList.GetItemById(strEmpID); context.Load(oListItem); context.ExecuteQuery(); oListItem["Title"] = "1"; oListItem["Name"] = txtEmployeeName.Text.ToString(); oListItem["Designation"] = txtDesignation.Text.ToString(); oListItem["Department"] = ddlDepatment.SelectedItem.Text.ToString(); oListItem["Address"] = txtAddress.Text.ToString(); oListItem["ContactNo"] = txtContactNo.Text.ToString(); oListItem["Email"] = txtEmail.Text.ToString(); DateTime dob = DateTime.Parse(txtDOB.Text.ToString()); oListItem["DOB"] = dob; oListItem.Update(); context.ExecuteQuery(); lblMessage.Text = "Employee Information Updated Sucessfully."; lblMessage.ForeColor = System.Drawing.Color.Green; lblMessage.Font.Bold = true; } } catch (Exception ex) { lblMessage.Text = "An Error occured while updating Employee Information." + ex.ToString(); throw ex; } }
To Delete record user can click on Delete button, it will ask him for Delete confirmation. If user confirms then item will be deleted.
Delete Confirmation :
Code to Delete event or DELETE list item is as below.
private void DeleteEmployee(int id) { try { var spContext = SharePointContextProvider.Current.GetSharePointContext(Context); using (var context = spContext.CreateUserClientContextForSPHost()) { Web web = context.Web; List oList = web.Lists.GetByTitle("Employee"); Microsoft.SharePoint.Client.ListItem oListItem = oList.GetItemById(id); oListItem.DeleteObject(); context.ExecuteQuery(); } } catch (Exception ex) { lblMessage.Text = ex.ToString(); } }