Qlik Community

New to QlikView

Discussion board where members can get started with QlikView.

Announcements
Make your voice heard! Participate in the 2020 Wisdom of Crowds® Survey. BEGIN SURVEY
Highlighted
shinnickr
Contributor II

Conditional show/hide columns based on contents of another column

Hi there,

I have a bit of a weird situation and I'm hoping someone will be able to help.

Right now I have a straight table with multiple columns that have conditional formatting to show different columns based on a selection.  The code for this is:

if(isnull(GetFieldSelections([Rule Description])), 1, 0) // Always shows column if no selection is made

OR

if(wildmatch(getfieldselections([Rule Description]),'*1)*'), 1, 0) // Shows column if selection is like 1)

OR

if(wildmatch(getfieldselections([Rule Description]),'*2)*'), 1, 0) // Shows column if selection is like 2)

This is working as intended, showing or hiding the different columns based on the [Rule Description] selection.

The problem I'm having now is getting the columns to also show or hide if the [Rule Description] column only has one DISTINCT value in it.

For example:

If someone makes a selection of a different filter ( [Code Center] ) and the selection filters the data to only have values of "1)....", I would also like to show the columns as if the [Rule Description] "1)....." was filtered upon.

Anyone have any ideas on what I can do to get this to work?  I have tried FieldValue() but I could not get it to work as intended.

1 Solution

Accepted Solutions
Highlighted

Re: Conditional show/hide columns based on contents of another column

31 Replies
Highlighted
Partner
Partner

Re: Conditional show/hide columns based on contents of another column

Hi Ryan,

Try GETSELECTEDCOUNT(<fieldname>)

Highlighted
shinnickr
Contributor II

Re: Conditional show/hide columns based on contents of another column

Unfortunately I'm looking for something to find the values of the columns not the count of them.  "1)...." is actually a string value in the [Rule Description] field, not a number.

Highlighted
Partner
Partner

Re: Conditional show/hide columns based on contents of another column

Hi Ryan,

Sorry, I based my answer on this comment:

The problem I'm having now is getting the columns to also show or hide if the [Rule Description] column only has one value in it.

because with GETSELECTEDCOUNT() it returns 1 if only one value is selected and 0 when nothing is selected. Perhaps you could use a combination:
IF(GETSELECTEDCOUNT(<field>)=1,GETFIELDSELECTION(<field>),NULL())

Highlighted
shinnickr
Contributor II

Re: Conditional show/hide columns based on contents of another column

Ah, I apologize.  I meant to say one DISTINCT value in it.  It could have 10-20 values, but all of them would be "1)....."

Highlighted

Re: Conditional show/hide columns based on contents of another column

Hi Ryan,

I am not sure I understand your question. But try his

If(Count(DISTINCT [Rule Description] ) =1,1,0)

Highlighted
shinnickr
Contributor II

Re: Conditional show/hide columns based on contents of another column

Yeah I'm sorry, I just don't really know how to explain it very well.


I have 13 different values in [Rule Description] and 15 different columns that I want to dynamically show/hide based on the value of [Rule Description].  I have it working with my earlier code that if people actually filter upon a single [Rule Description], it shows only the columns I want to show.  The problem is that end users might not filter solely on [Rule Description].  So if someone filters on [Cost Center], the columns don't hide because they are looking at the [Rule Description] filter, not any others.  What I want to happen is that if someone filters on anything other than [Rule Description] and the resulting table only has DISTINCT [Rule Description]s, to hide the columns as if they'd filtered on [Rule Description] and nothing else.

Highlighted
shinnickr
Contributor II

Re: Conditional show/hide columns based on contents of another column

So I actually think you're on the right track, and what I need to do is just combine it with set analysis so that the type of rule is taken into account.

So something like:

if(count({$<wildmatch(GetFieldSelections([Rule Description]), '*1)*')>} DISTINCT [Rule Description] = 1, 1, 0))

But I can't get the syntax right.

But I also can't use GetFieldSelections because nothing is actually selected for [Rule Description].....Argh

Highlighted

Re: Conditional show/hide columns based on contents of another column

Got it. Something like this.

If(GetSelectedCount([Cost Center])>0 and GetSelectedCount([Rule Description])=0 and Count(Distinct [Rule Description]) =1,1,0)

Highlighted

Re: Conditional show/hide columns based on contents of another column

Ryan, I am not why you are hard-coding the specific value '*1)*.  You said that you have 13 distinct values, so this will work for only the specific value and not others. I have to catch my cab so sorry if there is delay in my response (But I will surely reply within 1 hr).