0

I am using SharePoint 2010 and I would like to create a list that certain users can update. 1) I want them to be able to update only one item in the list field (a priority number, a unique sequential number starting with 1) and no other fields. I don't want them to add list items, only change existing ones. 2) I want the user to be able to see every item in the list while they are doing it.

I basically want it to operate like a Netflix queue, where you can see all the items and you are allowed to change only the priority number (and preferably move the others down automatically since there can only be one of each number in that field). I don't necessarily need it to order the items on the screen in real time, my main concern is capturing the data. Could this be a web part? A form? A different list?

I prefer a solution that doesn't involve programming but I have access to SharePoint Designer and could probably handle if it's fairly simple code. Thank you.

1
  • how would you enforce the editing of only one field? Is each user tied to one number? Can you explain a bit more? Seems interesting.
    – Mike
    Commented Dec 11, 2013 at 20:42

2 Answers 2

1

True field level security in SharePoint lists is tricky to implement out-of-the-box.

Since you are only worried about one column, I would use the following methodology.

For discussions sake, and to continue your Netflix comparison, we'll say your main list is 'Movies'. You could create a second list called 'MovieQueue' which would have 2 columns:

  • a number field called 'Priority'
  • a lookup column which ties that list item back to a single Movie.

Your 'Movies' list would retain it's original security, so it would only be updatable by those with the right permissions. Your 'MovieQueue' list items could be editable by a wider audience without danger of altering your original Movie list.

The one thing I haven't discussed yet is how to make sure each 'Movies' item gets a corresponding entry in the 'MovieQueue' list. I would have a simple workflow that gets fired on any create/update of the 'Movie' item. The workflow attempts to search the 'MovieQueue' list to see if an entry for the current movie exists. If it does not, it creates the entry.

With this solution, technically the user could change the Movie that a given MovieQueue entry points to. As long as this implementation wasn't mission critical, you could prevent them from accidently doing this by creating a custom edit form and setting the control for the movies field to display only. For the in-place priority changes on the main list view, you could go in SharePoint Designer and use some javascript to prevent editing of the 'movie' lookup column (jQuery helps with this). This still doesn't prevent the user from changing the list item through some other channels, but it does keep the system working as long as everyone plays nice.

For basic editing the priorities, you could use the 'edit in place' feature of your basic list view. If you really wanted a rich user experience, you could use jQuery along with SPServices to create a true drag and drop experience for your users.

0

You tagged this with SharePoint Enterprise, so I assume that is your license. In that case you can use InfoPath to edit the list form. A new list item will show all fields as editable.

Use an Infopath rule in the Form Load that sets all but the one field as read-only (format to be disabled) when ID field contains a value, i.e. it is not a new item.

Create a new permission level based on the "Contribute" permission level and untick the permissions to "Add Items" and "Delete Items". Assign that new permission level to the user.

Assign the Contribute permission to the people who can create new items. They will see a "new item" form with all fields editable.

This will take care of the issue to be able to edit one field only.

But if the number in the field needs to be unique, a change in that field would require that all other items in the list need to be changed automatically. For example, if a user changes an item with the number "8" to be the number "1", then all items previously numbered 1 to 7 would need to be adjusted to 2 to 8. This is the hard part and I don't think it can be achieved without programming.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.