Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

I have a structure below;

  • Folder - Sharepoint Folder
  • Component - Custom Folder which is inherited from Folder
  • Deliverable - Custom Document which is inherited from Document

when I view a folder properties, I want to see the list of the content in detail view

For instance, referring to the screenshot below, Graphics Folder has got 2 Component and 4 Deliverables. I would like to have a datagrid style to view what this folder has. Same applies to Component type to. Each Component can have multiple Deliverables. when I view properties of the Component folder, I want to see list of the deliverables. it is kinda Master-Detail implementation.

Could you suggest me a way to start implementing this, I really dont know where to start. Thanks for your help in advance.

Detail View

share|improve this question

2 Answers 2

up vote 3 down vote accepted

Can't resist mentioning, that the "Open" button on the ribbon and the link on the folder title are still there, and they really do the same what you want, with only one click cost.

Anyway, certainly there are several approaches to achieve what you want.

Approach 1: iframe

I believe the most simple way would be what I call "dirty js hack"... It is NOT recommended way, but it will take you only few minutes, and if you need to do the job quickly, it will do.

The idea is basically to display the corresponding page in iframe, inside the modal dialog.

Here is the precise sequence:

  • Switch the folder view form into edit mode. For IE, you can achieve this following way:
    1. Inside the modal dialog, right-click and select Properties in the context menu
    2. Copy-paste the page address into new browser tab, strip "IsDlg=1" from the query string, and hit Enter
    3. Select Site Actions -> Edit page
  • Add "Content Editor" webpart to the page

enter image description here

, and drag it so it is placed to the bottom of the default list form webpart:

enter image description here

  • Follow the "Click here to add new content" advice :) Then, on the ribbon, select HTML-> Edit HTML:

enter image description here

  • Copy and paste the following code into edit box:

    <script type="text/javascript"> document.write('<iframe src="' + $get('SPFieldFile').childNodes[1].href + '?IsDlg=1" height="320" width="650"><' + '/iframe>'); </script>

  • Save and exit page edit mode

You will get the following final look (you may need to clear the browser cache, F12 -> Cache -> Always update from server; F5):

enter image description here

I admit, it doesn't look very cool. Also, it is very fragile: if you have customized list display form or something like this, this solution could suddenlty stop working.

So, about the alternative solution.

Approach 2: custom web part

This approach involves Visual Studio. You should develop a very simple custom web part, which adds ListViewByQuery inside itself, and configures it so the ListViewByQuery.Query.Folder points to the corresponding folder of the list. You can determine the current item and current list from the webpart code, using SPContext.Current.ListItem and SPContext.Current.List accordingly.

This is of course the preferable solution.

Once the webpart is created, you can put in to the folder display form either manually, as I've described above, or programmatically, during the feature activation.

Please, do not hesitate to ask if you have any additional questions.

share|improve this answer

First of all there is nothing wrong with @AndreyMarkeev answer you accepted. However he has stated that his approaches are fragile or they requires custom solutions.

So as alternative and to apply KISS principle here are my thoughts:

Since you are on 2010 platform (hopefully SP server 2010) you can use Document Sets. It is OOTB solution and it already contains built-in 'details view'. You can easily change it's welcome page to meet your needs. There is only one problem: Document Sets doesn't support nesting (see Limitations)

So what are your options:

  • Use folders as first level (eg. Graphics Folder) and use Document Sets on Component level or vice-versa -> you are loosing one 'detail view'.
  • Use Document libraries as Folders, place Document Sets inside them as Components and put Documents - Deliverables inside Document Sets. You can even make one custom page and place all libraries on it listing all document sets inside each one ('fake' first level detail view)

There is also one much more simpler solution. Use one library, make 2 additional columns Folder and Component and make grouped view (first Folder, then by Component column).

I really think before making full custom solutions to achieve your exact goals you need to explore all OOTB solutions. Most of times it is better to make few trade offs, even lose some functionality and stick to basics.

share|improve this answer
    
document sets are able to cope with that, but unfortunately, I am using foundation edition...Grouping will work on list view, however, if I want to view an individual item and its related items, It will not work I guess. –  AnarchistGeek Apr 16 '12 at 15:01

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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