【问题标题】:ajax dependency selection pluginajax依赖选择插件
【发布时间】:2014-04-22 13:02:16
【问题描述】:

根据之前的帖子和那里收到的一些建议,我修改了我的应用程序,以将 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 域类中的代码 类项目列表 {

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}" />

【问题讨论】:

  • 0.40 已发布以解决此问题 - 请查看下面的答案(即将更新如何操作)

标签: ajax grails grails-plugin


【解决方案1】:

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

次要选择的问题取决于被选择的主要,主要选择本身会触发收集的列表以填充次要框。由于已定义未选择主节点 - 好吧,您会看到问题所在。

让我想一想,如果您在 github 上将其作为问题/建议提出,我会更早提出。

更新

好的,我已经推出了 0.40,它有望解决编辑模式:

请看一下这个页面:

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

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

所以在

  value='4'
  secondaryValue='10'

Value 是它自己的值,secondaryValue 是你期望设置的下一个 selectSecondary

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

无论如何测试它似乎都在工作。

【讨论】:

    猜你喜欢
    • 2017-10-03
    • 2016-11-16
    • 2011-07-22
    • 2013-05-21
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    相关资源
    最近更新 更多