uf_show_columns() to show only certain columns in DW


Link to this posting

The function shows (makes visible) the passed columns and hides (makes invisible) the rest of the columns in the DW. Columns in a grid DW will be shown in the order they appear in as_columns[].

Example of use:

Code: Select all
gn_util.uf_show_columns(dw_dept, as_cols_to_show[])
gn_util.uf_show_columns(dw_emp, {"emp_id", "list_name", "first_name"})

The source code of the function:

Code: Select all
/**********************************************************************************************************************
Dscr:         Shows (makes visible) the passed columns and hides (makes invisible) the rest of the columns in the DW.
            Columns in a grid DW will be shown in the order they appear in as_columns[].
***********************************************************************************************************************
Arg:         adw - DataWindow
            as_columns[] - names of columns to show
***********************************************************************************************************************
Developer:   Michael Zuskin -  http://linkedin.com/in/zuskin | http://code.intfast.ca/
**********************************************************************************************************************/
int      li_count
int      i
string   ls_col_name
string   ls_col_idx
string   ls_rc

adw.SetRedraw(false)
adw.post SetRedraw(true)

// Step 1: hide ALL columns:
li_count = Integer(adw.Describe("DataWindow.Column.Count"))
for i = 1 to li_count
   ls_col_idx = "#"+ String(i)
   ls_col_name = Upper(adw.Describe(ls_col_idx + ".Name"))
   adw.Modify(ls_col_name + ".Visible = 0") // don't check ret code - the column exists for sure since it was returned by Describe()
   adw.Modify(ls_col_name + "_t.Visible = 0") // don't check ret code - existence of the "..._t" label is not guaranteed
next
   
// Step 2: show columns passed in as_columns[]:
li_count = UpperBound(as_columns[])
for i = 1 to li_count
   ls_rc = adw.Modify(as_columns[i] + ".Visible = 1")
   if ls_rc = "!" then
      f_throw(PopulateError(0, "Column '" + IfNull(as_columns[i], "<NULL>") + &
                              "', passed in as_columns[" + String(i) + "], doesn't exist in " + adw.DataObject + "."))
      // f_throw(): http://code.intfast.ca/viewtopic.php?t=1
      // IfNull(): http://code.intfast.ca/viewtopic.php?t=5
   end if
   adw.Modify(as_columns[i] + "_t.Visible = 1") // don't check ret code - existence of the "..._t" label is not guaranteed
next

return