How to programmatically disable ECB menu item for a particular list item? - sharepoint

I have a custom document library which is based on default document library. I'd like to disable Edit physical document for some of the documents depending on their property.

If you don't mind a client side solution then you can use either a single Content Editor Web Part to inject some JavaScript on a single page or execute the script on every page in the site collection using our free SharePoint Infuser.
Plenty of examples, although not your particular problem, can be found here.

Related

SharePoint 2010, Upload Document Redirect to Page

I have a document library in SharePoint 2010 that several different teams are using for the same purpose. Each team has their own page that has a filtered view of the document library on it. The document library also has custom columns.
The issue I am running into is when a team member uploads a document from their page. They click "Add document" from their page, and then they browse to the document they want to upload. This part works perfectly - and the URL specifies the source as the team's page. However, after a user selects the document and clicks "OK", it takes them to the EditForm.aspx page that allows the user to fill in the meta data for the document. This is fine, but now the source URL specifies a view from inside of the document library, and no longer points to the team's page (where they came from).
Does anyone know how I can change this source URL to point to the team's page instead of the document library? Or, does anyone know a workaround for this issue so that a user can upload a document from a page (with document library web part on it) so that it returns to the page?
Thanks!!
SharePoint 2010 should work the way you want out-of-the-box. I tried to reproduce your situation, but was unable to. What I did was set up a library with one custom column and two custom views. I then created two pages, one with a list form web part using one view and one with a list form web part with the other view.
When I click on the Add Document from either page, a modal dialog window opens to the Upload page. I first select the file (Upload.aspx) and then am redirected to the metadata properties (EditForm.aspx). After filling out the metadata, the dialog window closes, and the page behind it (the page we were originally on) refreshes to show the new document in the web part. So the user experience is that they stay on the page they want while adding the document as desired.
If you edit your question or provide comments with more details on your situation we can try to reproduce it, but the functionality you describe is exactly how it is supposed to work out-of-the-box.
Peter's correct - SharePoint's being SharePoint.
If I am reading this right, it may be that you should simply check out in-line editing. Using a view, you and edit the properties dynamically without leaving the page (each team getting their own view).
Alternately, I see many who simply want to redirect users back to the page they came from either edit or view of an item regardless of where that was (a link, etc.). Simplest way to do that is a little programming by adding a button to the forms replacing the OK/Cancel with your own code. Simply edit the forms using InfoPath to add the new buttons - you have the user context if you need to custom redirect to a team home page or some such.

Changing the source of a Sharepoint List View

Effectively I am looking to change the viewed Document Library within an exsisting List View Web Part from 'Document Library #1' to Document Library #2'. I want to do so without having to re-create the entire web part (e.g. settings & views) as I would have to do this multiple times.
Sharepoint version is 2007 and Sharepoint Designer is not avaliable.
Context: I am currently building a Sharepoint area which will consist of multiple ASPX pages all based off an original layout. This layout includes a List View web part that directly views a Document Library.
Each ASPX page has a Document Library attributed to it (e.g. Page1.aspx and DocLib1), which I wish to display within this List View web part.
Page1.aspx was setup just fine (effectively the original). When setting up Page2.aspx as a direct copy of the first, I am unable to change the List View from DocLib1 to DocLib2 as there seems no option to do so.
The list view web part isn't easily customizable unless you can edit the xml for the web part and change some guids. If you want to be able to change the source list through the browser you will need to use a different web part - the content query web part is an out of box option, though obviously that is quite different from the standard list view.
You may also be able to do something with with list templates - if you can use a custom template instead of the standard document library template, you may be able to alter AllItems.aspx to do what you need.

Load a web part before other

I am stuck with a problem. I am having tool part where I get all the Lists present in the Site.
I have other web part which should get the selected List in the tool part.
I see that the web part is loaded first then the tool part. so the web part is unable to the List selected in the tool part.
Please note that the text box is in a User Control.
Please help me.
I have looked at your code and found the following:
First things first. You need to move AWAY from using ToolParts and the SharePoint native webpart. they are deprecated and are a remnant from SPS2003. In MOSS / WSS 3.0 you can and should use the ASP.NET WebPart.
Secondly, I think you are mixing things up. The ToolPartGetLists is not a toolpart, it is a webpart, that in itself loads the CustomToolPart, which in turn allows you to select a list.
This toolpart is only shown when you edit the shared webpart in the UI. The list you select is then persisted to the SelectedList property of the webpart using the toolpart.
The connected webpart then tries to read the SelectedList property I guess.
Like I said, I could go and try to fix the code for you, but it is not the way to go, you really (REALLY) need to switch to ASP.NET WebPart based webparts. The native sharepoint one WILL be fased out in the (near) future.
Here you can find an example, with code! (scroll to bottom for download link). As a bonus, it uses the built in sharepoint listpicker
I don't know of any way you could control the load order of elements (web parts) on the same page.
Sounds more like you want to have your second web part (the display of the lists) have a "default" when the page loads--which could be empty. Then it would be changed to the selected list only when the user clicked a new selection in the other web part (the list of lists).

Communicate with Document Library Browser Web Part

Background
My task is to, in SharePoint, show an image of a process map which should be clickable. Think of an imagemap in html. Some areas take you to other process map images and other brings up a pop-up window.
"Connected" to each process map is a set of documents. These documents are stored in a document library. There are one process map for each folder in the document library. The documents should be shown next to the image. The person clicking either the image or a folder to navigate in the hierarchy should also be able to upload, download and delete the documents.
Question
What would be the easiest solution for this?
My thoughts
... so far is to create a custom web part which I add above the document library browser (the default one in MOSS 2007). This web part reads some xml file pointing out the image to show and the areas which is to be clickable. It listens for some kind of events from the document library, like clicks on folders in the browser or it reads the current URL to know where in the folder hierarchy we are currently, and from that show the correct process map image. When the image is clicked, the web part updates the image and tells the document library to update accordingly.
Is this feasible? Am I on the wrong track? How do I communicate with a document library?
Thanks, Martin
My thoughts are that you create a web part that displays your image map and outputs(provider) the appropriate criteria to a another web part that consumes it and displays the files in a document library.
You can achieve this by creating your own custom webpart that displays a document library based on a CAML query. Each Images sends a different CAML query to the document library webpart.
I hope this helps. Please provide information on how you solved this problem if you have already done so.
Thanks
Long since I've been here... Actually solved this one.
We created two web parts, one for process navigation and one for filtering documents in the document library.
The web part for process navigation is actually just a web part that looks for a specific query parameter in the URL and adds ".html" to it. Then looks for that document in a document library. If found then this document is shown inside an iframe. Simple!
The html documents are produced by Visio and exported to html, then uploaded to SharePoint. The links in the Visio document drives the application with queries.
The web part that shows the corresponding documents also looks for a specific query in the URL then sends filterparameters to the document library through the IfilterProvider interface. I snatched this example IFilterProvider at MSDN and made it look in the URL for parameters and then made the controls invisible to the user.
Really simple solution, though the customer needs to put in a lot of work to incorporate their company processes into it. And it is somewhat error prone and probably a sucker to make changes to data-wise.

Sharepoint: Best way to display lists of non-Sharepoint content with "compatible" UI?

I've built a web part for Sharepoint that retrieves data from an external service. I'd like to display the items in a way that's UI-compatible with Sharepoint (fits in with its surroundings.)
I'm aware of the "DataFormWebPart" but was unable to get one working properly. It requires a valid DataSource and I was unable to build one from the results of a web service call... Part of the problem is that my web service wrappers don't expose the XML return info, rather I have a bunch of deserialized objects. There doesn't seem to be an easy way to turn actual objects into a datasource, or populate a "generic" datasource from object data.
I could use an SPGridView to get the same UI, but the grid control doesn't have much in the way of smarts -and- it forces every field into its own column. I'd prefer to render each list item as a single cell with complex rendering (for instance the way that StackOverflow shows its lists of questions.) I'd also like to get as much of the Sharepoint-standard UI as possible, such as the sorting, filtering, and paging controls.
So, first: Has anyone here written a Sharepoint control that does this, and if so do you have sample code to share? If not: am I overlooking some useful control, whether MS-supplied or available in an external library?
Thanks!
Steve
Sharepoint: Best way to display lists
of non-Sharepoint content with
“compatible” UI?
Take a look at the built in sharepoint web controls:
Microsoft.SharePoint.WebControls Namespace
It contains all the controls used in sharepoint. I'd tell you more, but the documentation is very thorough.
Problem with SharePoint is that there are a bunch of different ways to do this. If your data is not changing too often and is not overly large it may be worth considering entering it into a list for display.
If you have the Enterprise licence it may be worth getting your data into the BDC and using it there.
you may have to convert the objects into xml or use the serialised objects with the XML webpart for display. This still has the issue of custom rendering using XSLT.
Here's a great article that explains how to configure BDC connections to web services using the BDC Definition Editor:
Creating a Web Service Connection by Using the Business Data Catalog Definition Editor
http://msdn.microsoft.com/en-us/library/bb737887.aspx
The best way to do this IMO is to make a Web Part. As a Web Part the UI will be automatically rendered to be the same as the theme the site is using (unless you override it) and it will be able to be placed anywhere by anyone with admin privileges.
Tutorial on making a Web Part
Tutorial on packaging and deploying a Web Part
Example Web Part Source Code
You could create a custom web part and use an SPGridView. You say you don't like it, because it forces every field into its own column, but that's not true. You can create a template (ITemplate) for every column and fully customize what's shown inside it, just like you would using a normal ASP.Net GridView. Using this approach I've added the little "New" images right next to a list item's Title, just like SharePoint does itself.

Resources