Link To New Item Form

Give users the ability to add items to a list without showing the entire list web part. In my example, I’ve added a “Submit Request” button to a Document Set Welcome Page. Clicking this will open the New Item form for my Tickets list.

docset


<script type="text/javascript">

 function displayLayover(url) {

 var options = SP.UI.$create_DialogOptions();

 options.url = url;

 options.dialogReturnValueCallback = Function.createDelegate(

 null, null);

 SP.UI.ModalDialog.showModalDialog(options);

 }

 </script>

<input type="button" onclick='javascript:displayLayover("/sites/sandbox/mustard/Lists/Tickets/NewForm.aspx")' value="Submit Request">

Steps:

1. Add a Script Editor web part to your page.

2. Click EDIT SNIPPET.

3. Replace the URL in this line with the path to your list’s New Item form (you can also change what the button says by changing the ‘value’):

<input type="button" onclick='javascript:displayLayover("/sites/sandbox/mustard/Lists/Tickets/NewForm.aspx")' value="Submit Request">

NOTE: If your URL looks something like this: /sites/sandbox/mustard/_layouts/15/start.aspx#/Lists/Tickets/NewForm.aspx, remove /_layouts/15/start.aspx# from the path.

embed

4. Click Insert and save the page.

5. To test, click the new “Submit Request” button.

formpopup1

6. Add some information and click Save.

7. Navigate to the list to confirm.

ticket

Update List/Library Columns With External Content Type Columns

Scenario:

You have a column on a custom list or library that needs to be back-filled with data from an External Content Type (ECT).

Solution:

Create a list from the ECT and use PowerShell to update your custom list’s column with the ECT’s list column.

Creating a list (assuming you already connected an ECT):

Open SharePoint Designer 2013 and navigate to your External Content Types. Click on the ECT you need data from and click “Create List & Form”.

Name the list whatever you want and click OK.

The list will be created in the site or subsite you’re connected to in SharePoint Designer.

Updating Custom List With ECT List Column:

My example shows how to match Customer names in an ECT with corresponding Folders in a document library to update the Status column.  If you need to update every item in a list, comment out line 78, un-comment lines 72 and 81, then remove the query.

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

#Get the context - top level site collection
$ctx = Get-SPServiceContext http://sp2013

#Get the scope
$scope = new-object Microsoft.SharePoint.SPServiceContextScope $ctx

#Get the target site collection
$webTarget = Get-SPWeb -identity "http://sp2013/sites/customer"

#Get the ECT List
$list = $webTarget.Lists["Entity List"]

#Array to Hold Result - PSObjects
$ListItemCollection = @()

#Get All List items. Replace -name "Name" with the column name on the ECT list.
#Add more columns if required
$list.Items | foreach {
$ExportItem = New-Object PSObject
$ExportItem | Add-Member -MemberType NoteProperty -name "Entity" -value $_["Entity"]
$ExportItem | Add-Member -MemberType NoteProperty -name "Status" -value $_["Status"]

#Add the object with property to an Array
$ListItemCollection += $ExportItem
}

#Export the result Array to CSV file
$ListItemCollection | Export-CSV "E:\SharePoint\EntityStatus.csv" -NoTypeInformation

#Dispose the web Object
$webTarget.Dispose()

#Pause for 10 seconds for the CSV file to populate all the way.
Start-Sleep 10

function Update-SPList()
{
#Import to destination list
#This section of the PowerShell will loop through the csv file we created and update the Status column in our Customer Folders library.
$csvVariable= Import-CSV -path "E:\SharePoint\EntityStatus.csv"

# Destination site collection. You can use any site, it does not have to be in the same collection as ECT list.
$WebURL = "http://sp2013/sites/customer"

# Destination list name
$listName = "Customer Folders"

#Get the SPWeb object and save it to a variable
$webDestination = Get-SPWeb -identity $WebURL

#Query ONLY folders.
$query = New-Object Microsoft.SharePoint.SPQuery;
$query.Query =
" <Where>

<Eq>
<FieldRef Name='FSObjType' />
<Value Type='Integer'>1</Value>
</Eq>

</Where>";

$list = $webDestination.Lists[$listName]

#If you want to update all items, remove the query and uncomment the following line
#$items = $list.Items

#loop through csv file
foreach($row in $csvVariable)
{
#Updating queried items
$updateitem = $list.GetItems($query) | Where {$_["Title"] -eq $row.Entity}

#Updating all items
#$updateitem = $items | Where {$_["Title"] -eq $row.Entity}

#loop through SharePoint list
Write-Host $row.Entity

$updateitem["Status"] = $row.Status
$updateitem.Update()
}

if ($webDestination)
{
$webDestination.Dispose()
}
}
Update-SPList

Update All List Items Using PowerShell

Scenario:

You added a new column and need to update that column for every item in a list or library.

Solution:

Here is an example PowerShell script that can be used to update one or more columns for every single item in a list.

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

function UpdateColumn()
{
#URL where the list or library lives
$WebURL = "http://sp2013/subsite"

#name of that list or library
$listName = "Documents"

#get the SPWeb object and save it to a variable
$webDestination = Get-SPWeb -identity $WebURL
$list = $webDestination.Lists[$listName]

#array of all items
$items = $list.Items

foreach ($item in $items)
{
Write-Output $item["FileLeafRef"]

#change "Column" to internal name of your column
#change "Something" to the information you're updating that column with
$item["Column"] = "Something"
$item.Update()
}

if ($webDestination)
{
$webDestination.Dispose()
}
}

UpdateColumn

Remember: change $WebURL to the URL of the site or subsite where the list or library lives, change “Column” in $item[“Column”] to your column’s internal name, and change “Something” to whatever information you want to update that column with.