0

ここに画像の説明を入力してください

いくつかの問題があります。参照テーブルの値が選択されると、selectの最初の制約が読み込まれます。

問題1-最後の2つの選択ボックス名-制約オンには、最初の制約オンからの複製オプションが必要ですが、前の選択ボックスで選択されたオプションは含まれていません。どうやってするの?

問題2 -JavaScript呼び出しで選択ボックスが読み込まれますが、これに対するアラートを追加する必要があります。なぜですか?人口2選択のコード-

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-検索後、選択して入力した値を保持する必要があります(ポストバック)。

それを行う方法を助けてください?

ありがとう

4

1 に答える 1

0

AJAXの最初の「A」は「非同期」を表します。LoadSelects()ajaxの成功コールバックで実行する必要があります

関数を次のように簡略化できます。

function LoadSelects(){

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

 }

#columnsこれにより、オプションが他の両方の選択にコピーされ、両方の選択が解除されます。これは、あなたが求めているものであると私は信じています。

上記のコードのように使用すると、オプションからプロパティ$('select').val('')が削除されますselected

編集 選択eachに使用しているのが同じIDを持つ複数のIDを持っているためである場合、IDは一意である必要があるため、問題が発生します。この場合、コードを行内のトラバースにリファクタリングする必要があります

編集#2AJAXの成功

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) {}
})
于 2012-03-27T20:52:34.017 に答える