ajax依赖选择插件

时间:2014-04-22 13:02:16

标签: ajax grails grails-plugin

基于之前的帖子和收到的一些建议,我修改了我的应用程序,使用ajax依赖选择插件来处理我所拥有的一些链式选择列表。 选择列表是顾问 - >合同 - >项目

我有一个创建页面和编辑页面,用于使用相同表单模板的评估。在创建页面上,我的链接选择正常工作并保存到数据库。但是,当我打开现有评估时,仅填充选择主要选择框。我是否需要对此插件执行一些特殊操作,以便在编辑页面上根据需要填充辅助选择框值和列表?

以下是我的域类的代码 顾问域类

class CdeConsultant {

String ccf_consultant_firm

static hasMany=[contracts:Contract]
static mapping = {
    table name: 'cde_consultant'
    version false
    id column: 'ccf_consultant_id', generator: "assigned"
}
}

以下是我的合同域类

的代码
class Contract {

String contractName
int conId
String phone
String projectManagerName
CdeConsultant cdeConsultant
static hasMany=[projectLists:ProjectList]



    static mapping = {
        table name: 'contract'
        version false
        id column: 'contracts_id', generator: "assigned"
}
}       

以下是我的ProjectList域类的代码     class ProjectList {

String project
Contract contract


    static mapping = {
        table name: 'project_list'
        version false
        id column: 'dpp_project_phase_id', generator: "assigned"

        contract column: 'contracts_id'
}
}

以下是评估类的代码,这是保存这些字段的地方

import java.util.Date

class CdeEvaluation extends Base {

String consultant
String consultantName
String project
String projectManager
String projectManagerPhone
String evalStatus

String cdeComment
Date evalBeginDate
Date evalEndDate
String submitApproval
int workCategory
int contract
String contractName
List<CdeEvalQuestion> questions
static hasMany = [questions: CdeEvalQuestion]

static constraints = {
    consultant(nullable:true)
    consultantName(nullable:true)
    project(nullable:true)
    contract(nullable:true)
    contractName(nullable:true)
    projectManager(nullable:true)
    projectManagerPhone(nullable:true)
    evalStatus(nullable:true)
    workCategory(nullable:true)

    evalEndDate validator: {value, cdeEvaluation -> value >= cdeEvaluation.evalBeginDate}

    cdeComment(nullable:true, maxSize:2000)
    submitApproval(nullable:true)
    evalBeginDate(blank: false, nullable:true) 
    evalEndDate(blank: false, nullable:true)


    createdBy(blank: false, nullable:true, maxSize:13)
    dateCreated(blank: false, nullable:true)
    lastUpdatedBy(blank: false, nullable:true, maxSize:13)
    lastUpdated(blank: false, nullable:true)

}

static mapping = {
    table name: 'CDE_EVALUATION'
    id column: 'ceval_id_seq'
    id generator: 'sequence', params: [sequence: 'ceval_id_seq']
}

 @Override
public String toString() {
    "${project}"
}


class EvaluationController {
    static scaffold=true
}

}

最后,我的表单模板的代码在创建和编辑页面中使用。

 <g:selectPrimary class="form-select-list" id="consultant" name="consultant" label="Consultant"
    domain='gov.mt.mdt.cde.domain.evaluation.CdeConsultant'
    searchField="ccf_consultant_firm"
    collectField='id'

    domain2='gov.mt.mdt.cde.domain.evaluation.Contract'
    bindid="cdeConsultant.id"
    searchField2='contractName'
    collectField2='id'


    noSelection="['': 'Select A Consultant']" 
    setId="contract"
    value="${cdeEvaluationInstance?.consultant}"


    appendValue=''
        appendName='Select a Contract' />

    <g:selectSecondary class="form-select-list" id="contract" name="contract"
        domain2='gov.mt.mdt.cde.domain.evaluation.ProjectList'
        bindid="contract.id"
        searchField2='project'
        collectField2='project'


        noSelection="['': 'Select A Contract']"
        setId="project"

        appendValue=''
        appendName='Select a Project'

        value="${cdeEvaluationInstance?.contract}"
required="false"/>


 <g:select class="form-control" name="project" id="project" optionKey="project"    optionValue="project"
        from="[]"  noSelection="['': 'Select A Project']" value="${cdeEvaluationInstance?.project}" />

1 个答案:

答案 0 :(得分:0)

抱歉有点迟到在这里回答你的问题,编辑我不认为有很多文档:)。虽然目前的情况让我有了扩展插件的想法......

作为辅助选择的问题依赖于主要选择,主要选择本身会触发要填充的辅助框的聚集列表。由于未定义主要内容,因此您可以看到问题。

让我想一想,如果你已经把它作为github上的问题/建议提出来的话我会提前做到。

<强>更新

好的,我推出了0.40,希望能够解决编辑模式:

请看一下这页:

https://github.com/vahidhedayati/ajaxdependancyselectexample/blob/master/grails-app/views/myContinent/testedit.gsp

理论上假设硬编码值作为动态变量从db返回,每个主要/次要调用需要一个额外的定义:

所以在

  value='4'
  secondaryValue='10'

是它自己的值, secondaryValue 是您希望设置下一个selectSecondary

请注意我还必须从selectPrimary / selectSecondary调用中删除appendName和appendValue。我认为编辑模式中存在某种形式的冲突......

无论如何,测试似乎正在发挥作用。