Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hello Everyone, We're using Qlik Sense .Net SDK (14.1.0) in .Net Core 3.0. We need to get theme name of selected qliksense app but we can't find any solution. Does anyone know how to get theme name of qliksense app with .Net Core 3.0.
Information about the theme can be found in the "app properties object" used by the client to store certain client-specific info about the app. You can see it if you use the "Qlik Explorer for Developers" tool:
You'll see it as an entry titled "App client properties" in the subtree of an app.
Getting hold of that object programatically is a little convoluted as you'll first have to create an app object list to get the objects' ID. Like this:
var listProps = new GenericObjectProperties{Info = new NxInfo{Type = "mylist"}};
var listDef = new AppObjectListDef { Type = "appprops" };
listProps.Set("qAppObjectListDef", listDef);
var list = app.CreateGenericSessionObject(listProps);
var objId = list.Layout.Get<AppObjectList>("qAppObjectList").Items.First().Info.Id;
app.DestroyGenericSessionObject(list.Id);
Then once you have that ID, then you can get the theme ID used like this:
var obj = app.GetGenericObject(objId);
var themeId = obj.Properties.Get<string>("theme");
Console.WriteLine("Theme id: " + themeId);
So now we have the theme id. If you want to get the name of the id, then you'll have to get the correct information from Qlik Sense. I used this endpoint, but I'm not sure if that will also give you information about custom themes:
/resources/assets/external/sense-themes-default/default-themes.json
Here's code for getting that using this library: https://www.nuget.org/packages/QlikSenseRestClient/
var restClient = new RestClient(url);
restClient.AsNtlmUserViaProxy();
var themes = JObject.Parse(restClient.Get("/resources/assets/external/sense-themes-default/default-themes.json"));
Console.WriteLine(themes);
Theme ıd solved my issue thank you for solution.
Can you please tell us how you found out the solution, i am also looking to save theme name in variable but could find any solution yet
@Øystein_Kolsrud I'm creating a new app using .net SDK:
appEntry = location.CreateAppWithName(appName);
It gets a default theme "Sense Horizon". How can I modify it to "Sense Classic" using c#? I have tried app.SetAppProperties() that has no theme property
I've never tried it myself, but I think it's all about modifying that "theme" property of the "approps" object. Check out the initial response to this thread on how to get it. Once you know the ID of the "approps" object and the theme you want, you should be able to do something like this:
var obj = app.GetGenericObject(objId);
using (obj.SuspendedLayout)
{
obj.Properties.Set("theme", "<new theme id>");
}