0

こんにちは、タスク用とリマインダー用の 2 つのテンプレートをレンダリングする taskReminder というページがあります。タスクには、チェックボックスをオンにすると、タスクリストを再入力/更新する必要があるチェックボックスがあります。すべてが正常に機能していますが、理解できないように見えるのは、タスクフレームが更新され、その中にページ全体が表示される理由です。要約すると、ページ全体にはタスクフレームがあり、その中にページ全体が表示されます(インセプションのように!)htmlを再設計し、リモート関数を再評価し、リマインダーフレーム内に差分チェックボックスを入れてみました-チェックを入れると、自分のフレームリストではなく、タスクフレーム内のリマインダーリストをページ全体で更新します。

最初の読み込み時、チェックボックスはクリックされていません - 表示は問題ありません 最初のロード時

チェックボックスがチェックされ、タスクフレームが下にスクロールされると、リマインダーフレームもそこにあるか、ページ全体が表示されていることに注意してください

これはなぜですか?私のコード:タスクリマインダーホルダー用

   <%@ page import="com.irondata.icmgrails.constants.*" %>

<html>
  <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <meta name="layout" content="main" />
        <style type="text/css">
            body {background-color:#EEF2F7;}
        </style>
        <script type="text/javascript" language="javascript" src="${resource(dir:'js',file:'icmutilities.js')}"></script>
    </head>
   <body role="main">
   <g:form>
        <g:hiddenField name="caseId" value="${cmCaseInstance?.id}" /> 

        <div class="body" role="article">
            <h1>Tasks and Reminders</h1>
            <br />
            <br />
            <div id="tasks">
                    <div class="summary">
                        <div class="summaryHeader">
                            <div class="summaryHeaderLeft">Tasks</div>
                            <div class="summaryHeaderCenter">&nbsp;</div>
                            <div class="summaryHeaderRight">&nbsp;</div>
                        </div>

                         <div class="gadgetShort">
                            <div>
                                <g:checkBox name='test' onclick="${remoteFunction(action:'workCategory', params:'\'completed=\'+ this.checked + \'&caseId=\' + caseId.value', update:[success:'divTasks', failure:'divTasks']) }" value="${false}"/>
                            </div>
                            <div id="divTasks">
                                <g:render template="taskList" model="['taskInstanceList': taskInstanceList, 'taskInstanceTotal': taskInstanceTotal, 'cmCaseInstance':cmCaseInstance]"/>
                            </div>   
                         </div>
                    </div>
            </div>
            <div id="reminders">
                    <div class="summary">
                        <div class="summaryHeader">
                            <div class="summaryHeaderLeft">Reminders</div>
                            <div class="summaryHeaderCenter">&nbsp;</div>
                            <div class="summaryHeaderRight">&nbsp;</div>
                        </div>

                         <div class="gadgetShort">
                            <div>
                                <span class="gadgetName">Reminder List</span><span class="gadgetNumber">${taskInstanceTotal}</span>
                            </div>
                            <div id="divReminders">
                                <g:render template="reminderList" model="['reminderList': reminders, 'reminderListTotal': reminderCount]"/>
                            </div>   
                         </div>
                    </div>
            </div>
        </div>
   </g:form>



   </body>
</html>

タスク リストとリマインダー リストはまったく同じなので、リマインダー リストのコードは入れませんでした。

<span class="gadgetName">Task List</span><span class="gadgetNumber">${taskInstanceTotal}</span>

            <table cellspacing="0" cellpadding="0" id="tasksTableGrails" class="icmSortableTable" summary="Tasks" >
                <thead>
                    <tr>

                        <g:sortableColumn scope="col" property="activityDescrip" title="${message(code: 'taskByCase.description.label', default: 'Description')}" params="${flash}" />

                    </tr>
                </thead>                                              
                <g:each in="${taskInstanceList}" status="i" var="taskInstance">
                    <tr class="${(i % 2) == 0 ? '' : 'altRowColor'}">

                        <td>${fieldValue(bean: taskInstance, field: "activityTypeIdActivityType.activityDescrip")}</td>

                </g:each>          
            </table>

ここに私のコードビハインドがあります:

def workCategory = {


        def isCompletedTaskIncluded


        flash.employeeId = params.employeeId
        flash.caseId = params.caseId

        def cmCaseInstance = CmCase.get(params.caseId as Long)
        def employee = employeeService.getUserEmployee(session.currentUser.id)

        def criteria = Task.createCriteria()
        def query = {

            eq ("cmCaseIdCmCase", cmCaseInstance)
            or {
                eq ("fromEmplIdEmployee", Employee.get(employee.id))
                eq ("toEmplIdEmployee", Employee.get(employee.id))
            }
            if(params.completed=="false")
                isNull("actCompDate")


        }

        def taskInstanceList = criteria.list(query)

        def reminders = Reminder.createCriteria().list() {
            createAlias("cmCaseIdCmCase", "cmCase")
            isNull("cmCase.closedDate")
            eq('employeeIdEmployee', employee)
            eq("cmCaseIdCmCase", cmCaseInstance)


        }

        def taskCount = taskInstanceList.size()
        def reminderCount = reminders.size()
        render(view: "taskReminder", model: [taskInstanceList: taskInstanceList, taskInstanceTotal:  taskCount, reminderList: reminders, reminderListTotal: reminderCount, cmCaseInstance:cmCaseInstance])

    }
4

1 に答える 1

1

コントローラーを編集します。

render(view: "taskReminder", model: [taskInstanceList: taskInstanceList, taskInstanceTotal:  taskCount, reminderList: reminders, reminderListTotal: reminderCount, cmCaseInstance:cmCaseInstance])

に (テンプレートのパスとタスク テンプレートの名前を修正します):

if(request.xhr){
   render(template: '/***templatePath***/task.gsp', model: [taskInstanceList: taskInstanceList, taskInstanceTotal:  taskCount, reminderList: reminders, reminderListTotal: reminderCount, cmCaseInstance:cmCaseInstance])
   return
}

render(view: "taskReminder", model: [taskInstanceList: taskInstanceList, taskInstanceTotal:  taskCount, reminderList: reminders, reminderListTotal: reminderCount, cmCaseInstance:cmCaseInstance])
于 2012-10-01T17:37:25.890 に答える