Instantly share code, notes, and snippets.
Last active
December 25, 2015 14:59
-
Save kerenapura/6994620 to your computer and use it in GitHub Desktop.
Update SharePoint List Data in a GridView (Part 1)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- Assemblies, imports, and registrations go here --> | |
<asp:GridView ID="StarbucksGridView" runat="server" AutoGenerateEditButton="true" AutoGenerateColumns="true" | |
OnRowEditing="Edit_Row" OnRowCancelingEdit="Cancel_Edit" | |
OnRowUpdating="Update_Row" CellPadding="4" EnableModelValidation="True" | |
ForeColor="#333333" GridLines="None"> | |
<AlternatingRowStyle BackColor="White" ForeColor="#284775" /> | |
<EditRowStyle BackColor="#999999" /> | |
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> | |
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> | |
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> | |
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> | |
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> | |
</asp:GridView> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Web.UI; | |
using System.Web.UI.WebControls; | |
using System.Web.UI.WebControls.WebParts; | |
using System.Data; | |
using Microsoft.SharePoint; | |
namespace SampleProject.EditGridViewP1 | |
{ | |
public partial class EditGridViewP1UserControl : UserControl | |
{ | |
protected void Page_Load(object sender, EventArgs e) | |
{ | |
if (!IsPostBack) | |
{ | |
//Select the current site, assuming the list is in this site. | |
SPWeb thisWeb = SPContext.Current.Web; | |
SPQuery query = new SPQuery(); | |
//The list name is Starbucks. | |
SPList thisList = thisWeb.Lists["Starbucks"]; | |
SPListItemCollection queryResults = thisList.GetItems(query); | |
//Construct a data table. | |
DataTable dt = new DataTable(); | |
dt.Columns.Add("ID", typeof(int)); | |
dt.Columns.Add("Title", typeof(string)); | |
dt.Columns.Add("Size", typeof(string)); | |
dt.Columns.Add("Calories", typeof(int)); | |
dt.Columns.Add("Seasonal", typeof(bool)); | |
//Code to fill the DataTable goes here; I’ll omit it to save some space. | |
foreach (SPListItem item in queryResults) { | |
DataRow dr = dt.NewRow(); | |
dr["ID"] = Convert.ToInt32(item["ID"].ToString()); | |
dr["Title"] = item["Title"] != null ? item["Title"].ToString() : ""; | |
dr["Size"] = item["Size"] != null ? item["Size"].ToString() : ""; | |
dr["Calories"] = item["Calories"] != null ? Convert.ToInt32(item["Calories"].ToString()) : 0; | |
dr["Seasonal"] = item["Seasonal"] != null ? Convert.ToBoolean(item["Seasonal"].ToString()) : false; | |
dt.Rows.Add(dr); | |
} //end foreach | |
//Persist the table in a Session object. | |
Session["StarbucksData"] = dt; | |
//Remember, earlier we set AutoGenerateColumns to true, | |
//so there’s no need to define the columns in the code. | |
StarbucksGridView.DataSource = dt; | |
StarbucksGridView.DataBind(); | |
} | |
} //end Page_Load | |
private void Bind_Data() | |
{ | |
//Bind to flashed table | |
StarbucksGridView.DataSource = Session["StarbucksData"]; | |
StarbucksGridView.DataBind(); | |
} //end Bind_Data | |
protected void Edit_Row(object sender, GridViewEditEventArgs e) | |
{ | |
//Set the index of the row to be edited. | |
StarbucksGridView.EditIndex = e.NewEditIndex; | |
//Bind data to the GridView control. | |
Bind_Data(); | |
} //end Edit_Row | |
protected void Cancel_Edit(object sender, GridViewCancelEditEventArgs e) | |
{ | |
//Reset the edit index. | |
StarbucksGridView.EditIndex = -1; | |
//Bind data to the GridView control. | |
Bind_Data(); | |
} //end Cancel_Edit | |
protected void Update_Row(object sender, GridViewUpdateEventArgs e) | |
{ | |
//Get the updated values from the controls. | |
//Please note that Cells[0] is the Update/Cancel command column. | |
GridViewRow row = StarbucksGridView.Rows[e.RowIndex]; | |
string id = ((TextBox)row.Cells[1].Controls[0]).Text; | |
string title = ((TextBox)row.Cells[2].Controls[0]).Text; | |
string size = ((TextBox)row.Cells[3].Controls[0]).Text; | |
string calories = ((TextBox)row.Cells[4].Controls[0]).Text; | |
bool seasonal = ((CheckBox)row.Cells[5].Controls[0]).Checked; | |
//Retrieve the data from the Session object. | |
DataTable ds = (DataTable)Session["StarbucksData"]; | |
//Update the values in the Session table. | |
ds.Rows[row.DataItemIndex]["ID"] = Convert.ToInt32(id); | |
ds.Rows[row.DataItemIndex]["Title"] = title; | |
ds.Rows[row.DataItemIndex]["Size"] = size; | |
ds.Rows[row.DataItemIndex]["Calories"] = Convert.ToInt32(calories); | |
ds.Rows[row.DataItemIndex]["Seasonal"] = seasonal; | |
//Update the values in the SharePoint List. | |
SPWeb thisWeb = SPContext.Current.Web; | |
SPList thisList = thisWeb.Lists["Starbucks"]; | |
SPListItem item = thisList.GetItemById(Convert.ToInt32(id)); | |
item["Title"] = title; | |
item["Size"] = size; | |
item["Calories"] = Convert.ToInt32(calories); | |
item["Seasonal"] = seasonal; | |
item.Update(); | |
//Reset the edit index. | |
StarbucksGridView.EditIndex = -1; | |
//Bind data to the GridView control. | |
Bind_Data(); | |
} //end Update_Row | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment