2014-02-25 70 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