Description:
Add the Sharepoint Item to List if Item does not exist in Sharepoint List, Update the Item if exist in Sharepoint List- JSOM
Step1:
Create a List in SharePoint site. List name called “CategoryList” and Create the 4 Columns shown below
Step2: Edit the page and add “Script Editor web part” to the page
Javascript References
- <script type="text/javascript" src="/_layouts/15/init.js"></script>
- <script type="text/javascript" src="/_layouts/15/sp.runtime.js"></script>
- <script type="text/javascript" src="/_layouts/15/sp.js"></script>
- <script type="text/javascript" src="/_layouts/15/MicrosoftAjax.js"></script>
- <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript"> //Start script - add below entire code under script tag execpt html code
- $(document).ready(function ()
- {
- GetAll();
- $("#btn-display").on('click', function () {
- Textboxempty();
- Dislaybind();
- });
- $("#btn-save").on('click', function () {
- saveItem();
- });
- });
- function Textboxempty() {
- $("#txtCategoryId").val("");
- $("#txtCategoryName").val("");
- $("#txtCategoryTitle").val("");
- }
- function saveItem()
- {
- var clientContext = new SP.ClientContext();
- var oList = clientContext.get_web().get_lists().getByTitle('CategoryList');
- var camlQuery = new SP.CamlQuery();
- var uniq1 = $("#txtCategoryUnique").val();
- camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name=\'CategoryUnique\'/>' +
- '<Value Type=\'Text\'>'+ uniq1 +'</Value></Eq></Where></Query></View>');
- this.ListItemColl = oList.getItems(camlQuery);
- clientContext.load(ListItemColl);
- clientContext.executeQueryAsync(
- Function.createDelegate(this, this.onQuerySucceededSave1),
- Function.createDelegate(this, this.onQueryFailed1)
- );
- }
- function onQuerySucceededSave1(sender, args)
- {
- var itemCount = ListItemColl.get_count();
- if (ListItemColl.get_count() > 0)
- {
- updateItem(); //Update the item
- }
- else
- {
- createCategory(); //Add the item
- }
- }
- function createCategory()
- {
- var clientContext = new SP.ClientContext.get_current();
- var oList = clientContext.get_web().get_lists().getByTitle('CategoryList');
- var itemCreateInfo = new SP.ListItemCreationInformation();
- this.oListItem = oList.addItem(itemCreateInfo);
- oListItem.set_item("Title", $("#txtCategoryTitle").val());
- oListItem.set_item("CategoryName", $("#txtCategoryName").val());
- oListItem.set_item("CategoryId", $("#txtCategoryId").val());
- oListItem.set_item("CategoryUnique", $("#txtCategoryUnique").val());
- oListItem.update();
- clientContext.load(oListItem);
- clientContext.executeQueryAsync(
- Function.createDelegate(this, this.onQuerySucceeded),
- Function.createDelegate(this, this.onQueryFailed)
- );
- }
- function onQuerySucceeded() {
- GetAll();
- Textboxempty();
- alert('Save Record succefully');
- }
- function onQueryFailed(sender, args) {
- alert('Failed Records ');
- }
- var ListItemCollToBeUpdated = "";
- var listItemToBeUpdated = "";
- function updateItem()
- {
- var uniq = $("#txtCategoryUnique").val();
- var clientContext = new SP.ClientContext.get_current();
- var oList = clientContext.get_web().get_lists().getByTitle('CategoryList');
- var camlQuery = new SP.CamlQuery();
- camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name=\'CategoryUnique\'/>' +
- '<Value Type=\'Text\'>'+ uniq +'</Value></Eq></Where></Query></View>');
- ListItemCollToBeUpdated = oList.getItems(camlQuery);
- clientContext.load(ListItemCollToBeUpdated);
- clientContext.executeQueryAsync(UpdateRequireIteams, getItemsToBeUpdatedFailed);
- }
- function UpdateRequireIteams()
- {
- ListItemToBeUpdated= ListItemCollToBeUpdated.getEnumerator();
- MultipleListItemsupdate();
- }
- function getItemsToBeUpdatedFailed(sender, args)
- {
- alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
- }
- function MultipleListItemsupdate()
- {
- var itemArray = [];
- var clientContext = SP.ClientContext.get_current();
- var oList = clientContext.get_web().get_lists().getByTitle('CategoryList');
- while(ListItemToBeUpdated.moveNext())
- {
- var oItem = ListItemToBeUpdated.get_current();
- var oListItem = oList.getItemById(oItem.get_id());
- oListItem.set_item('CategoryName', $("#txtCategoryName").val());
- oListItem.set_item('Title', $("#txtCategoryTitle").val());
- oListItem.set_item('CategoryId', $("#txtCategoryId").val());
- oListItem.set_item('CategoryUnique', $("#txtCategoryUnique").val());
- oListItem.update();
- itemArray.push(oListItem);
- clientContext.load(itemArray[itemArray.length-1]);
- }
- clientContext.executeQueryAsync(MultipleListItemsupdateSuccess, MultipleListItemsupdateFailed);
- }
- function MultipleListItemsupdateSuccess()
- {
- alert('Items Updated');
- GetAll();
- }
- function MultipleListItemsupdateFailed(sender, args)
- {
- alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
- }
Bind the data to appropriate textbox
- function Dislaybind()
- {
- var clientContext = new SP.ClientContext();
- var oList = clientContext.get_web().get_lists().getByTitle('CategoryList');
- var camlQuery = new SP.CamlQuery();
- var uniq1 = $("#txtCategoryUnique").val();
- camlQuery.set_viewXml('<View><Query><Where><Eq><FieldRef Name=\'CategoryUnique\'/>' +
- '<Value Type=\'Text\'>'+ uniq1 +'</Value></Eq></Where></Query></View>');
- this.ListItemColl = oList.getItems(camlQuery);
- clientContext.load(ListItemColl);
- clientContext.executeQueryAsync(
- Function.createDelegate(this, this.onQuerySucceeded1),
- Function.createDelegate(this, this.onQueryFailed1)
- );
- }
- function onQuerySucceeded1(sender, args)
- {
- var listItemInfo = '';
- var listItemEnumerator = ListItemColl.getEnumerator();
- while (listItemEnumerator.moveNext()) {
- var oListItem = listItemEnumerator.get_current();
- $('#txtCategoryTitle').val(oListItem.get_item('Title'))
- $('#txtCategoryId').val(oListItem.get_item('CategoryId'))
- $('#txtCategoryName').val(oListItem.get_item('CategoryName'))
- }
- }
- function onQueryFailed1(sender, args) {
- alert('Request failed. ' + args.get_message() +
- '\n' + args.get_stackTrace());
- }
Data Display in Table
- function GetAll() {
- var clientContext = new SP.ClientContext.get_current();
- var oList = clientContext.get_web().get_lists().getByTitle('CategoryList');
- var camlQuery = new SP.CamlQuery();
- camlQuery.set_viewXml('<View><Query></Query></View>');
- this.ListItemColl = oList.getItems(camlQuery);
- clientContext.load(ListItemColl);
- clientContext.executeQueryAsync(Function.createDelegate(this, this.ongetQuerySucceeded), Function.createDelegate(this, this.ongetQueryFailed));
- }
- function ongetQuerySucceeded(sender, args) {
- var listItemInfo = '';
- var table = $("#tblview");
- var innerHtml = "<tr><td>EmployeeId </td><td>CategoryId </td><td>CategoryTitle </td><td>CategoryName </td></tr>";
- var listItemEnumerator = ListItemColl.getEnumerator();
- while (listItemEnumerator.moveNext()) {
- var oListItem = listItemEnumerator.get_current();
- innerHtml += "<tr><td>"+ oListItem.get_item('CategoryUnique') +"</td><td>" + oListItem.get_item('CategoryId') +"</td><td>" + oListItem.get_item('Title')+ "</td><td>" + oListItem.get_item('CategoryName')+"</td></tr>";
- }
- table.html(innerHtml);
- }
- function ongetQueryFailed(sender, args) {
- alert('Request failed');
- }
- function success() {
- GetAll();
- $("#dvMessage").text("Operation Completed Successfully");
- }
- function fail() {
- $("#dvMessage").text("Operation failed " + arguments[1].get_message());
- }
</script> //End script
HTML code:
- <div id="dvMessage" style="color:#0000FF"></div>
- </br>
- </br>
- <table>
- <tr>
- <td>Enter Employee ID and click on Display Button</td>
- <td>
- <input type="text" id="txtCategoryUnique" class="c1"/>
- </td>
- <td>
- <input type="button" value="Display" id="btn-display" />
- </td>
- </tr>
- </table>
- <table>
- <tr>
- <td>
- <table>
- <tr>
- <td>Category Title</td>
- <td>
- <input type="text" id="txtCategoryTitle" class="c1"/>
- </td>
- </tr>
- <tr>
- <td>Category Name</td>
- <td>
- <input type="text" id="txtCategoryName" class="c1"/>
- </td>
- </tr>
- <tr>
- <td>Category Id</td>
- <td>
- <input type="text" id="txtCategoryId" class="c1"/>
- </td>
- </tr>
- <tr>
- <tr>
- <td>
- <input type="button" value="Save" id="btn-save" />
- </td>
- </tr>
- </table>
- </td>
- <td>
- </td>
- </tr>
- <tr>
- <td>
- <table id="tblview">
- </table>
- </td>
- </tr>
- </table>
Step3: Save page
Outcome:
Test1: Enter the information in First Textbox(Enter EmployeeId) and click on Display.
If data already there, Information displays in textbox: We can Update by click on Save button
If data already not there, Text boxes will be empty: We can freshly Add data by click on Save button
Update:
Add:
Note: If you need to populate the data without click on Display button, use below textbox event code
- $('#txtCategoryUnique').on('blur', function() {
- Textboxempty();
- Dislaybind();
- });