2014-02-18 23 views
0

我正在使用grails easygrid插件。Grails easygrid插件過濾器toString()

ownerGrid { 
      dataSourceType 'gorm' 
      domainClass Owner 
      gridImpl 'dataTables' 
      fixedColumns true 
      columns { 
       room 
       { label "owner.room.label" 
        type 'text' 
        value {owner->owner.room.toString()} 
        filterClosure { filter -> 
         room { 
           ilike(...., "%${filter.paramValue}%") 
         } 
        } 
       } 

我不知道很多有關規定 - 如何構建Grails的,但我想比較房間類的toString()值。

我該如何做到這一點?

感謝

回答

1

我認爲'房間'域對象具有某種名稱屬性(您可以在toString方法中使用)。或者,如果它更復雜,那麼您可能會從2列或更多列生成toString。在這種情況下,您可以使用:Gorm derived properties。我們來調用這個派生的屬性:'derivedName'。這是你的網格如何:

ownerGrid { 
     dataSourceType 'gorm' 
     domainClass Owner 
     gridImpl 'dataTables' 
     fixedColumns true 
     columns { 
      room { 
       label "owner.room.label" 
       type 'text' 
       property owner.room.derivedName 
       filterClosure { filter -> 
        room { 
         ilike('derivedName', "%${filter.paramValue}%") 
        } 
       } 
      } 
     } 
    } 
+1

謝謝,這正是我想要的。如果我想派生名稱爲Hotel.name + RoomType.name,是否有可能,或者我只能從SQL中獲取ID? –

+0

我想這取決於。 RoomType是一個枚舉嗎?你如何將它存儲在數據庫中? – tudor

0

它不工作的方式......除非你保存toString()方法的輸出在Owner DC的額外的屬性,所以你可以火反對它的查詢。 雖然這是一個壞主意在很多方面