Prasad Bolla's SharePoint Blog

Click Here to go through the Interesting posts within my Blog.

Click Here to go through the new posts in my blog.

Monday, February 25, 2013

Insert Edit Update Delete in GridView using Client Object Model in SharePoint 2010



Note:-
  1. For Enabling SessionState in SharePoint 2010 I have followed the below link. http://www.kajanmoorthy.com/2010/05/enable-session-state-in-sharepoint-2010.html
  2. No Need to Use Session State or View State for this Example as you can need to touch DataBase while updation & Deletion. I just Tried show how to use session in SharePoint 2010.


Ascx
<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="COMIEUDGVUserControl.ascx.cs" Inherits="COMIEUDGV.COMIEUDGV.COMIEUDGVUserControl" %>
<asp:GridView ID="dgvCOMSamples" runat="server" AutoGenerateColumns="False"
    DataKeyNames="ID" Width="100%" CellPadding="4" EnableModelValidation="True"
    ForeColor="#333333" GridLines="Both" AutoGenerateDeleteButton="True"
    AutoGenerateEditButton="True"  ShowFooter="true"
    onrowcancelingedit="dgvCOMSamples_RowCancelingEdit"
    onrowdeleting="dgvCOMSamples_RowDeleting"
    onrowediting="dgvCOMSamples_RowEditing"
    onrowupdating="dgvCOMSamples_RowUpdating"
    onrowcommand="dgvCOMSamples_RowCommand">
    <AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="ItemID">
            <ItemTemplate>
                <%# Eval("ID") %>
            </ItemTemplate>
            <EditItemTemplate>
                <asp:Label ID="lblItemID" runat="server" Text='<%# Eval("ID") %>' Columns="3" />
            </EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Title">
            <ItemTemplate>
                <%# Eval("Title") %>
            </ItemTemplate>
            <FooterTemplate>
            <table width="100%" cellpadding="0" cellspacing="0">
            <tr>
            <td><asp:TextBox ID="txtArticles" runat="server"></asp:TextBox>&nbsp;<asp:Button ID="btnSave" runat="server" Text="Save" CommandName="Insert" /></td>
            </tr>
            </table>
            </FooterTemplate>
            <EditItemTemplate>
                <asp:TextBox ID="txtTitle" runat="server" Text='<%# Eval("Title") %>' Columns="3" Width="25%" />
            </EditItemTemplate>
        </asp:TemplateField>
</Columns>
    <EditRowStyle BackColor="#7C6F57" />
    <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
    <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
    <RowStyle BackColor="#E3EAEB" />
    <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
</asp:GridView>
<asp:Label ID="lblMessage" runat="server"></asp:Label>
Ascx.cs
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Collections.Generic;
using Microsoft.SharePoint;
using SP=Microsoft.SharePoint.Client;

namespace COMIEUDGV.COMIEUDGV
{
    public partial class COMIEUDGVUserControl : UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Session["ArticlesData"] = getData();
                dgvCOMSamples.DataSource = Session["ArticlesData"];
                dgvCOMSamples.DataBind();
            }
        }
        [Serializable]
        public class Articles
        {
            public string Title { get; set; }
            public string ID { get; set; }
        }

        private void BindData()
        {
            if (Session["ArticlesData"] != null)
            {
                Session["ArticlesData"] = getData();
                dgvCOMSamples.DataSource = Session["ArticlesData"];
                dgvCOMSamples.DataBind();
            }
        }
        public List<Articles> getData()
        {
            List<Articles> ArticlesData = new List<Articles>();
            using (SP.ClientContext clientContext = new SP.ClientContext(SPContext.Current.Web.Url))
            {
                SP.List list = clientContext.Web.Lists.GetByTitle("Articles");
                var camlQuery = new SP.CamlQuery { ViewXml = "<View/>" };
                SP.ListItemCollection listItems = list.GetItems(camlQuery);
                clientContext.Load(listItems);
                clientContext.ExecuteQuery();
                foreach (SP.ListItem item in listItems)
                {
                    ArticlesData.Add(new Articles()
                    {
                        ID = item.Id.ToString(),
                        Title = (item["Title"] == null) ? "Data UnAvailable" : item["Title"].ToString()
                    });
                }
            }
            return ArticlesData;
        }

        protected void dgvCOMSamples_RowEditing(object sender, GridViewEditEventArgs e)
        {
            dgvCOMSamples.EditIndex = e.NewEditIndex;
            BindData();
        }

        protected void dgvCOMSamples_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            Label lbl = (Label)dgvCOMSamples.Rows[e.RowIndex].Cells[2].FindControl("lblItemID");
            TextBox txtTitle1 = (TextBox)dgvCOMSamples.Rows[e.RowIndex].Cells[2].FindControl("txtTitle");
            updateRow(lbl.Text, txtTitle1.Text);
            dgvCOMSamples.EditIndex = -1;
            BindData();
            lblMessage.Text = "Record Updated Successfully";
        }

        public void updateRow(string ItemID1, string Title)
        {
            SP.ClientContext clientContext = new SP.ClientContext(SPContext.Current.Web.Url);
            SP.Web web = clientContext.Web;
            SP.List list = web.Lists.GetByTitle("Articles");
            SP.CamlQuery query = new SP.CamlQuery();
            query.ViewXml = @"<Query><Where><Eq><FieldRef Name='ID' /><Value Type='Counter'>" + ItemID1 + "</Value></Eq></Where></Query>";
            SP.ListItemCollection listItems = list.GetItems(query);
            clientContext.Load(listItems);
            clientContext.ExecuteQuery();
            foreach (Microsoft.SharePoint.Client.ListItem item in listItems)
            {
                if (ItemID1 == item["ID"].ToString())
                {
                    item["Title"] = Title;
                    item.Update();
                    break;
                }
            }
            clientContext.ExecuteQuery();
        }

        public void DeleteRow(string ItemIDNew)
        {
            SP.ClientContext clientContext = new SP.ClientContext(SPContext.Current.Web.Url);
            SP.Web web = clientContext.Web;
            SP.List list = web.Lists.GetByTitle("Articles");
            SP.CamlQuery query = new SP.CamlQuery();
            query.ViewXml = @"<Query><Where><Eq><FieldRef Name='ID' /><ValueType='Counter'>" + ItemIDNew + "</Value></Eq></Where></Query>";
            SP.ListItemCollection listItems =list.GetItems(query);
            clientContext.Load(listItems);
            clientContext.ExecuteQuery();
            foreach (SP.ListItem item in listItems)
            {
                if (ItemIDNew == item["ID"].ToString())
                {
                    item.DeleteObject();
                    break;
                }
            }
            clientContext.ExecuteQuery();
        }

        protected void dgvCOMSamples_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            dgvCOMSamples.EditIndex = -1;
            BindData();
        }
        string strItemID1;
        protected void dgvCOMSamples_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            strItemID1 = dgvCOMSamples.DataKeys[e.RowIndex].Value.ToString();
            DeleteRow(strItemID1);
            BindData();
            lblMessage.Text = "Record Deleted Successfully";
        }

        protected void dgvCOMSamples_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Insert")
            {
                SP.ClientContext ctx = new SP.ClientContext(SPContext.Current.Web.Url);
                SP.List ArticlesList = ctx.Web.Lists.GetByTitle("Articles");
                SP.ListItemCreationInformation newRecord = new SP.ListItemCreationInformation();
                Microsoft.SharePoint.Client.ListItem item = ArticlesList.AddItem(newRecord);
                TextBox txtNewArticle = (TextBox)dgvCOMSamples.FooterRow.FindControl("txtArticles");
                item["Title"] = txtNewArticle.Text;
                item.Update();
                ctx.ExecuteQuery();
                txtNewArticle.Text = "";
                BindData();
                lblMessage.Text = "New Record Inserted";
            }
        }
    }
}
 

 

3 comments: