how to display columns as rows in ListGrid in Smar

2019-08-05 01:42发布

问题:

I am a new bee to Smart gwt. Basically I have my data structure as:

A
|_____ B1

  |__C1
  |__C2
  |__C3

|_ B2

So i have created my ListGridRecord as follows:

public class VEPAreaRecord extends ListGridRecord{

public VEPAreaRecord(){

}


/**
 * @param vepAreaName
 * @param checkStations
 */
public VEPAreaRecord(String vepAreaName, String[] checkStations) {
    setVepAreaName(vepAreaName);
    setCheckStations(checkStations);
}


/**
 * @return the vepAreaName
 */
public final String getVepAreaName() {
    return getAttribute("vepAreaName");
}
/**
 * @param vepAreaName the vepAreaName to set
 */
public final void setVepAreaName(String vepAreaName) {
    setAttribute("vepAreaName",vepAreaName);
}
/**
 * @return the checkStations
 */
public final String[] getCheckStations() {
    return getAttributeAsStringArray("checkStations");
}
/**
 * @param checkStations the checkStations to set
 */
public final void setCheckStations(String[] checkStations) {
    setAttribute("checkStations",checkStations);
}

}

But in my ListGrid I want tp show my data as

Area1 Area2 Area3

Check1 check2 chek3

check4

check5

So basically what i want is to display my rows as columns and vice-versa. But I dont know how to acheive this. Or is there any other component which takes care of this?

回答1:

Yes CubeGrid is available to Power and Enterprise license holders from Isomorphic. Check out the CubeGrid and Facets classes and take a look at the show cases on the smartgwt pages.

http://www.smartclient.com/smartgwtee/showcase/#cube_analytics and follow examples.

If you are just able to use ListGrid you can achieve the same thing through iterating through the records. If you are able to use a database you can enter customSQL

such as:

<operationBindings>
<operationBinding operationType="fetch" operationId="VEP_AREA_RECORD">

<customSQL>

SELECT * FROM (SELECT SUBSTRING(MeasurementTime,7,4) [Year], CASE SUBSTRING(Time,1,2) WHEN '01' THEN 'Jan' WHEN '02' THEN 'Feb' WHEN '03' THEN 'Mar' WHEN '04' THEN 'Apr'  WHEN '05' THEN 'May' WHEN '06' THEN 'Jun' WHEN '07' THEN 'Jul' WHEN '08' THEN 'Aug' WHEN '09' THEN 'Sep'  WHEN '10' THEN 'Oct'  WHEN '11' THEN 'Nov'  WHEN '12'THEN 'Dec' END as [Month],      [value] , [col1] as col1,
  col1 [col1_name], col2 [col2_name], col3 [col3], [col4_name] FROM your_table  WHERE MeasurementValue IS NOT NULL) TableDate  PIVOT <what you want in rows>  FOR [Month] IN (
    [Jan],[Feb],[Mar],[Apr],
    [May],[Jun],[Jul],[Aug],
    [Sep],[Oct],[Nov],[Dec]
  )
) AS PivotTable
 ORDER BY groupCol1, groupCol2

</customSQL>

clearly these columns could be actual values in your records/db or derived (in my case derived from the datefield. I"m not a SQL guru so if there's a better way I'd love to hear it.

In the above exmple the output would be

                           [jan]  [feb]  [mar]  etc.....in your case

[col1_valA] [col2_val1]    valx    valy
[col1_valB] [col2_val2