Hello,
I would like to get contents of MFFolderContentItemTypePropertyFolder of a view as shown in the attached image and also how do I get the ID 15. Thank you
Hello,
I would like to get contents of MFFolderContentItemTypePropertyFolder of a view as shown in the attached image and also how do I get the ID 15. Thank you
This is a grouping. The grouping exists within a view. You get the contents of the view (e.g. via GetFolderContents) which will return you potentially different types of things, including the groupings. For the groupings they have details on the TypedValue that represents the actual group. In the case of the screenshot you should have something representing the Agenda grouping, and a TypedValue which has the display name of "Agenda" and a lookup value of 15.
So how do i get the contents in the Agenda?
You use GetFolderContents again. That method takes a collection of FolderDef instances and you provide one instance of FolderDef for each "level" of the path. So you would provide one for the top-level view, one for each subview, and one for each grouping level you want to list.
Actually, I am unable to set the level for an example how do I pass it in this code
FolderDefs folderDefs = new FolderDefs();
var folderDef = new FolderDef();
folderDef.SetView(view.ID);
folderDefs.Add(-1, folderDef);
var mfilesSearchResult = vault.ViewOperations.GetFolderContents(folderDefs);
// Create the collection of folder defs. // We need to add one entry in here for each part of the path from the vault root. FolderDefs folderDefs = new FolderDefs(); // For this sample let's assume it's "M:\Sample Vault\By Class\Agenda" // where "by class" is a view with ID 123, and "agenda" is a grouping with class 456. // Set up the "by class" view. { var folderDef = new FolderDef(); folderDef.SetView(123); folderDefs.Add(-1, folderDef); } // Set up the "agenda" grouping. { // Set up a typed value to represent what the grouping is. // This depends upon the view structure; not everything will be a grouping by a lookup! var typedValue = new TypedValue(); typedValue.SetValue(MFDataType.MFDataTypeLookup, 456); var folderDef = new FolderDef(); folderDef.SetPropertyFolder(typedValue); folderDefs.Add(-1, folderDef); } // If we had more groupings or subviews or whatever then we would // continue to add to the folderDefs collection until // we've represented the entire path. // Get the folder contents. var mfilesSearchResult = vault.ViewOperations.GetFolderContents(folderDefs);
Thank you I managed to pass the variable
Now I am presented with a challenge to loop through the levels of a view. How do it?
I'm unsure what you mean. In another question (How do I get view's group by in COM API just as that of M:\Sample Vault\1. Documents\By Class - API - Forums - M-Files Community) you asked how to get the levels; they're an array on the view.
You'll have to be specific on what exactly you're trying to do.
I'm unsure what you mean. In another question (How do I get view's group by in COM API just as that of M:\Sample Vault\1. Documents\By Class - API - Forums - M-Files Community) you asked how to get the levels; they're an array on the view.
You'll have to be specific on what exactly you're trying to do.
For example, I have a list of Levels as shown:
var view = vault.ViewOperations.GetView(134);
foreach ( level in view.Levels)
{
Console.WriteLine(level.name);
}
I don't understand the question, sorry. You asked how to loop through the levels. You showed a loop going over the levels.
What are you trying to achieve?
But I don't know the interface to use for looping for example in getting the contens we use FolderContentItem in a loop. e.g.
foreach (FolderContentItem item in mfilesSearchResult)
{
}
. so, what do we use in Levels?
Show me a picture of the structure you have and what you want to output.
Broadly I think you need to convert the folder content item that represents the grouping across to a folder def, and use that to request the next set of data. But I'm not sure on the specifics until I can picture the output you're after.
I want to know how to pull or extract the property used in grouping the way it is written there as shown such as the
Year(Created) and Month(Created)
In the other thread we talked about getting the view via the API. The levels on the view is an ExpressionExs instances: M-Files API - Levels Property.
This is effectively a collection of ExpressionEx instances: M-Files API
The ExpressionEx contains an Expression: M-Files API - Expression Object
The Expression details the details about the grouping. You probably want to look at the Type, for example, to ensure that it's a property grouping: M-Files API - Type Property
For property groupings you need to look at the Expression's DataPropertyValuePropertyDef which contains the property that it's grouped by ("Created" in your screenshot above): M-Files API - DataPropertyValuePropertyDef Property. This is an ID which you would cross-reference with the property definitions in the vault (e.g. M-Files API - GetPropertyDefs Method).
Some groupings may also contain additional data, as well as the property. For example you can find out about the data function (year/month) from the DataPropertyValueDataFunction property: M-Files API - DataPropertyValueDataFunction Property
There's also lots of other data in the Expression which may be of interest including, for example, indirection levels.
If you need to get all this information programmatically then you'd look at all of the above and be able to get what you need. There is also a "GetExpressionAsText" method which may give you the simple string, if that's all you need: M-Files API - GetExpressionAsText Method
© 2024 M-Files, All Rights Reserved.