2014-02-25 68 views
0

這是我在一類建築代碼:斯卡拉列表validSelectValues沒有更新

object province extends MappedLongForeignKey(this, Province) { 
    override def dbColumnName = "province_id" 

    def selectValues: Box[List[(String, String)]] = 
     Full((("0", "")) +: Province.findAll(OrderBy(Province.name, Ascending)). 
       map(p => (p.id.is.toString, p.name.is))) 

    override def _toForm: Box[Elem] = Full(selectValues.flatMap{ 
     case Nil => Empty 
     case xs => Full(SHtml.ajaxSelect(xs, Full(this.is.toString), v => { 
      this.set(v.toLong) 
      JsCmds.ReplaceOptions("council_select", 
        councilsList(v).map(c => (c.id.is.toString, c.name.is)), None) 
     })) 
    }.openOr(<span>{"sin provincias"}</span>)) 

    private def councilsList(p: String) = p match { 
     case id if id != "" => 
      Council.findAll(By(Council.province, p.toLong), 
          OrderBy(Council.name, Ascending)) 
     case _ => List() 
    } 
} 

// Council 
object council extends MappedLongForeignKey(this, Council) { 
    override def dbColumnName = "council_id" 
    val id = "council_select" 

    override def validSelectValues: Box[List[(Long, String)]] = 
     Full(((0l, "")) +: Council.findAll(By(Council.province, province), 
          OrderBy(Council.name, Ascending)). 
       map(c => (c.id.is, c.name.is))) 

    override def _toForm: Box[Elem] = Full(validSelectValues.flatMap{ 
     case Nil => Empty 
     case xs => Full(SHtml.selectObj(xs, Full(this.is), this.set, "id" -> id)) 
    }.openOr(<select id={id}/>)) 
} 

在編輯表格,當我改變列表上的省議會名單由省過濾器更換完美,但是當我保存建築物,councill不會首次保存/更新。接下來的時間,因爲全省已經安置,所以省下來,直到我省其他時間...所以,當我設立一個新的省份時,省政府並沒有得救,我需要省2次,省1次,省1次。理事會。

我認爲這個問題是因爲對象理事會的validSelectValues,是我第一次加載頁面時加載的,並且它將按省省過濾,或者在沒有設置省時省略空列表...我怎麼能當我更改省名單時,重新加載市議會validSelectValues?

感謝

回答

0

嘗試用ajaxUntrustedSelect更換您的來電ajaxSelect。電梯中的正常選擇選項檢查提交的值是否可信,IE:它是生成頁面時可用的選項之一。如果您使用JavaScript或其他方式來改變列表,您可以通過使用該組件的Untrusted版本來避免該檢查。

+0

謝謝,但我在省toForm改變ajaxSelect通過ajaxUntrustedSelect和不工作。問題不是省,它很好地保存了所有的時間。問題是保存委員會:當我改變省和議會名單重新加載時,我選擇一個委員會,並試圖保存建築物,省省,議會不是。我必須省2次,省1次,理事會1次。如果我改變理事會而不改變省,它可以完美保存 – user3313534

0

我必須找到解決辦法...

object council extends MappedLongForeignKey(this, Council) { 
override def dbColumnName = "council_id" 
val id = "council_select" 

def selectValues: Box[List[(String, String)]] = province.obj match { 
    case Full(o) => Full(Council.findAll(By(Council.province, o), 
          OrderBy(Council.name, Ascending)). 
      map(c => (c.id.is.toString, c.name.is))) 

    case _ => Full((("0","")) Council.findAll(OrderBy(Council.name, Ascending)). 
      map(c => (c.id.is.toString, c.name.is))) 
} 

override def _toForm: Box[Elem] = Full(selectValues.flatMap{ 
    case Nil => Empty 
    case xs => Full(SHtml.untrustedSelect(xs, Full(this.is.toString), v => {this.set(v.toLong)}, "id" -> id)) 
}.openOr(<select id={id}/>)) 

}

+0

一個小問題:當我想爲理事會(省議會)設置一個空白值時,理事會不會更新爲空。我該如何解決這個問題 – user3313534