Strongly Typed Grid Data Access for Macro Parameters
Hi,
I have implemented skybrud.Umbraco.GridData for Strongly Typing the Grid Editor which was going fine.. but. I have access to all the values from the Grid Json output but I want to include Macros within the grid.
In the Json the macro data outputs like this:
"value":{
"macroAlias":"SomeWidget",
"macroParamsDictionary":{
"Headline":"Widget Headline",
"Link":"1102",
"SubHeadline":"Call to Action"
}
After a number of foreach loops to iterate through sections, rows, areas and finally controls, there are no properties to access the macro parameters and control.Value just outputs
Sorry for the lack of documentation. I simply haven't had the time for it :(
Do you have an example of what your code looks like? From what I can tell you're trying to use the Value property on the macro control. The type of property depends on the control, so for a macro control it is of the type GridControlMacroValue. You can use something like this:
if (control.Editor.Alias == "macro") {
GridControlMacroValue value = control.GetValue<GridControlMacroValue>();
if (value.MacroAlias == "TestMacro") {
Console.WriteLine("URL: " + value.Parameters["Url"]);
}
}
Yes, I was trying to access the value. I tried GetValue but didnt pass it a Type as per your documentation so it didn't work. What i ended up doing was getting the control as a JObject and accessing the Tokens to get the data. Your solution is much more precise, thanks!
JObject obj = control.JObject;
var valueToken = obj.SelectToken("value");
if (valueToken.SelectToken("macroAlias") !=null){
var macroAlias = valueToken.SelectToken("macroAlias");
var macroParams = valueToken.SelectToken("macroParamsDictionary");
Do you have an example of how you would replace the Grid Editor Bootstrap 3 convertor? I have done a version but i don't want to do all the code in the view.
I would prefer to create some Helper methods that output the HTML so I can store in a model and pass to the relevant views and Partials. I have a number of widgets that are both sitewide and local to the page. The intention is to use the gridEditor to select and organise the approriate widgets and populate with data/prefs; then the controller will call the Grid renderer method(using Skybrud.GridData), insert the widget code (pulled from templates) and output the html to the view. Templates could just be HTML with {{value}} tokens that get replaced by the method OR partial views that get passed the Jtoken macro parameters.
Do you think this is feasable or am i over complicating? Am i asking too much from the GridEditor? Due to the site being fully responsive and some widges using ajax/jquery, Depending upon certain parameters that the editor selects for the widget, I need to control the parent classes and markup so rendering the page output HTML before passing to the view gives more control. Any guidance would be apreciated.
I don't have an example on how to render the Grid in frontend using the strongly typed model, since I actually haven't had to use it myself yet. The strongly typed model was created as a proof of concept for indexing the Grid in Examine.
Thanks for the reply. An example or two would be great thanks, I am currently coding the UI Templates for the site so once complete would be good to share once I have integrated with the grid. I have Recompiled Bootstrap stripped down to just the core grid and base utilites so it will be a useful example. Thanks!
Getting the grid to work with examine will be the next thing! good work!
Strongly Typed Grid Data Access for Macro Parameters
Hi,
I have implemented skybrud.Umbraco.GridData for Strongly Typing the Grid Editor which was going fine.. but. I have access to all the values from the Grid Json output but I want to include Macros within the grid.
In the Json the macro data outputs like this:
"value": {
"macroAlias": "SomeWidget",
"macroParamsDictionary": {
"Headline": "Widget Headline",
"Link": "1102",
"SubHeadline": "Call to Action"
}
After a number of foreach loops to iterate through sections, rows, areas and finally controls, there are no properties to access the macro parameters and control.Value just outputs
Skybrud.Umbraco.GridData.Values.GridControlMacroValue
with no more poperties available.
Help would be much apreaciated! thanks. Howard
Umb v7.2.2 using VS2013
Hi Howard,
Sorry for the lack of documentation. I simply haven't had the time for it :(
Do you have an example of what your code looks like? From what I can tell you're trying to use the
Value
property on the macro control. The type of property depends on the control, so for a macro control it is of the typeGridControlMacroValue
. You can use something like this:Hi, Thanks for the quick response.
Yes, I was trying to access the value. I tried GetValue but didnt pass it a Type as per your documentation so it didn't work. What i ended up doing was getting the control as a JObject and accessing the Tokens to get the data. Your solution is much more precise, thanks!
JObject obj = control.JObject;
var valueToken = obj.SelectToken("value");
if (valueToken.SelectToken("macroAlias") != null){
var macroAlias = valueToken.SelectToken("macroAlias");
var macroParams = valueToken.SelectToken("macroParamsDictionary");
@Html.Partial("~/Views/Partials/Widgets/_CTA.cshtml", macroParams)
}
Do you have an example of how you would replace the Grid Editor Bootstrap 3 convertor? I have done a version but i don't want to do all the code in the view.
I would prefer to create some Helper methods that output the HTML so I can store in a model and pass to the relevant views and Partials. I have a number of widgets that are both sitewide and local to the page. The intention is to use the gridEditor to select and organise the approriate widgets and populate with data/prefs; then the controller will call the Grid renderer method(using Skybrud.GridData), insert the widget code (pulled from templates) and output the html to the view. Templates could just be HTML with {{value}} tokens that get replaced by the method OR partial views that get passed the Jtoken macro parameters.
Do you think this is feasable or am i over complicating? Am i asking too much from the GridEditor? Due to the site being fully responsive and some widges using ajax/jquery, Depending upon certain parameters that the editor selects for the widget, I need to control the parent classes and markup so rendering the page output HTML before passing to the view gives more control. Any guidance would be apreciated.
Many thanks! Howard
Hi again,
I don't have an example on how to render the Grid in frontend using the strongly typed model, since I actually haven't had to use it myself yet. The strongly typed model was created as a proof of concept for indexing the Grid in Examine.
I'll see whether I can dig up some examples ;)
Hi Anders,
Thanks for the reply. An example or two would be great thanks, I am currently coding the UI Templates for the site so once complete would be good to share once I have integrated with the grid. I have Recompiled Bootstrap stripped down to just the core grid and base utilites so it will be a useful example. Thanks!
Getting the grid to work with examine will be the next thing! good work!
Howard :)
is working on a reply...