два клонированных окна выбора не загружаются, если я удалю предупреждение - PullRequest
0 голосов
/ 28 марта 2012

enter image description here

У меня есть пара проблем - первое ограничение на выбор загружается при выборе значения справочной таблицы.

ВЫПУСК 1 - Последние два выбораимя блока - Ограничение на должно иметь клонированную опцию из первого ограничения на. но не должно иметь выбранную опцию в предыдущем поле выбора.Как это сделать?

ВЫПУСК 2 - Мой ящик выбора загружается при вызове JavaScript, но я должен добавить предупреждение для этого, почему?Выберите код для населения два -

function LoadSelects()
{
 $("#columns2 option").each(function() {
        $(this).remove();
    });
 $("#columns3 option").each(function() {
        $(this).remove();
    });
   alert("i m called");  ///it does not load the selects if i remove this****why?
 $("#columns option").clone().appendTo("#columns2");
  $("#columns option").clone().appendTo("#columns3");
 }  
}

Код контроллера для первого населения выберите -

 def getColumns = {
    def columns = GGWSchemaXref.executeQuery("select distinct p.columnname     from GGWSchemaXref p where p.tablename=:table and p.dbname = 'IVR_GUARDIAN'",[table:params.tableCombo])
    render(template:"selectTemplate", model: [ columnList: columns ])

}

Код страницы GSP здесь-

  <tr> <td>Reference Table:</td>
   <td><g:select name="tableCombo"
        noSelection="${['':message(code:'Select Table')]}"
        from="${result}" value="${tableName }"        onchange="${remoteFunction(action:'getColumns', update:'columns', params:'\'tableCombo=\'    + this.value', OnComplete = 'LoadSelects();')}"/> </td></tr>
 <tr id ="cons"><td nowrap>Constraint On:</td>
    <td nowrap><g:select name="columns" from="[]" /></td>
    <td nowrap>Constraint Value:</td>
    <td nowrap><g:textField name="columnValue" value="${enterVal }" />  
</tr>
 <tr id ="cons2"><td nowrap>Constraint On:</td>
    <td nowrap><g:select name="columns2" from="[]" /></td>
    <td nowrap>Constraint Value:</td>
    <td nowrap><g:textField name="columnValue2" value="${enterVal2 }" />  
</tr> 
 <tr id ="cons3"><td nowrap>Constraint On:</td>
    <td nowrap><g:select name="columns3" from="[]" /></td>
    <td nowrap>Constraint Value:</td>
    <td nowrap><g:textField name="columnValue3" value="${enterVal3 }" />  
</tr>     

ВЫПУСК 3- Мне нужно сохранить выбранные и введенные значения после поиска (отправить обратно).

Пожалуйста, помогите, как это сделать?

спасибо

1 Ответ

0 голосов
/ 28 марта 2012

Первое «A» в AJAX для «асинхронного».Вам нужно выполнить LoadSelects() при успешном обратном вызове вашего ajax

. Вы можете упростить функцию до:

function LoadSelects(){

    $("#columns2, #columns3").html( $("#columns").html()).val('') ;

 }

. Это скопирует параметры из #columns в оба другихвыбирает и отменяет выбор обоих, что, как я считаю, является тем, о чем вы спрашиваете.

Использование $('select').val(''), как в приведенном выше коде, удалит свойство selected из параметров

Редактировать Еслиeach, который вы используете для выбора, должен иметь более одного с одним и тем же идентификатором, у вас есть проблема, так как идентификаторы должны быть уникальными.В этом случае код должен быть рефакторизован для перехода в строку

РЕДАКТИРОВАТЬ # 2 AJAX Success

jQuery.ajax({
    type: 'POST',
    data: 'tableCombo=' + this.value,
    url: '/GryphonMonitor/load/getColumns',

    success: function(data, textStatus) {‌

        /*  this is callback when all data has been received*/      

        jQuery('#columns').html(data);
         LoadSelects();
    },
    error: function(XMLHttpRequest, textStatus, ‌errorThrown) {}
})
...