6

私のcoldfusionプロジェクトで動作する基本的なjqGridを手に入れました。jqGrid の私のフィールドの 1 つはコンボ ボックスです。現在、editoption 値は以下のようにハードコードされています。

colModel :
[
  {
   name:'seqnum',index:'seqnum', width:100,resizable:true,   
   align:"left",sorttype:"text",editable:true,edittype:"select",editoptions:   
   { value:"1:one;2:two"},editrules:{required:true}
  }
]

クエリ/URL からドロップダウンを設定する方法を見つけようとしています。

どんな助けでも大歓迎です。

前もって感謝します

4

7 に答える 7

6

$ .getJSON / getSequenceNumbers()の回答は、提示されたとおりに機能しません。コールバックは非同期であるため、getSequenceNumbers()の戻り値としてコールバックからデータを返す方法はありません。Martinが提案したdataURLメソッドを使用するか、$。getJSONコールバック内でjqGridを設定する必要があります。

$(document).ready(function() {
 $.getJSON("GetURL", function(data) {
  setupGrid(data);
 });
});

function setupGrid(data) {
...
    colModel :
    [
      {
       name:'seqnum',index:'seqnum', width:100,resizable:true,   
       align:"left",sorttype:"text",editable:true,edittype:"select",editoptions:
       { value:data},editrules:{required:true}
      }
    ]

...
}
于 2010-04-26T16:33:00.040 に答える
6

json を使用して URL を照会する関数を作成します。この関数は、「1:one;2:two」の形式の文字列を返す必要があります。

例えば:

    colModel :
    [
      {
       name:'seqnum',index:'seqnum', width:100,resizable:true,   
       align:"left",sorttype:"text",editable:true,edittype:"select",editoptions:
       { value:getSequenceNumbers()},editrules:{required:true}
      }
    ]

    function getSequenceNumbers(){
        $.getJSON("yourUrl", null, function(data) {
            if (data != null) {
                 //construct string.  
                 //(or the server could return a string directly)
            }
        });
    }

関数をインラインにすることもできると思いますが、読みにくくなると思います。

于 2009-05-18T12:59:15.913 に答える
5

...を使用しdataUrlます (ここのウィキを参照してください)。

現在、dataUrl は GET を生成しますが、コードを Github から取得すると、明らかな副作用なしに GET を POST に変更できます。

于 2009-09-18T21:09:11.063 に答える
4

サーバー側のスクリプト言語を使用している場合は、この問題を完全に回避できることに注意してください。たとえば、PHP では次のように使用できます。

{name:'myselectdata', index:'myselectdata', width:160, formatter:'select', editable:true, edittype:"select", cellsubmit:"clientArray", editoptions:{ <? echo getData() ?>}  },

次に、PHP 関数 getData() をページのさらに上にセットアップして、適切な文字列を返します。たとえば、

'value:"1:one;2:two"';

jQueryですべてを処理するほどエレガントでもポータブルでもないかもしれませんが、概念的には簡単だと思います。

于 2011-07-27T12:36:52.313 に答える
3

ColModel に次のような列があるとします。

{name:'id_UDM', index:'id_UDM', width:150, editable:true, edittype:"select", editoptions:{dataUrl:'filename.php'}}

最初に、これが select 要素であることを次のように宣言する必要があります。

edittype:"select"

次に、editoptions パラメーターに、次のような dataUrl を追加します。

editoptions:{dataUrl:'filename.php'}

filename.php は、オプションを含む「select」要素を返す必要があります。以下に例を示します。

<?php
    include("connectionToMyDatabase.php");
    $query1 = "SELECT * FROM table WHERE 
    $result1 = mysql_query($query1);
    $response ='<select>';
    while($row = mysql_fetch_array($result1)) {
         $response .= '<option value="'.$row['value'].'">'.$row['name'].'</option>';
    }
    $response .= '</select>';

    echo $response;

 mysql_close($db);  
?>

お役に立てれば。

于 2012-10-10T19:43:05.163 に答える
1

これは古い質問であることは知っていますが、同じ問題を見つけました。
これを dataUrl と ajaxSelectOptions の組み合わせで解決します。

colModel:[
    //class_id
    $.extend(true,
    {
        name:'class_id'
        ,index:'class_id'
        ,edittype:'select'
        ,formatter:'select'
        ,editoptions: { dataUrl:"db.php?ajaxOp=getClassesOptions" } //to send dynamic parameter, combine with ajaxSelectOptions
    }
    ,{}
    )

dataUrl 文字列は静的であることに注意してください。つまり、追加/編集が発生するたびに異なるパラメーターを送信することはできません。以下のコードは機能しません!

,editoptions: { dataUrl:"db.php?ajaxOp=getClassesOptions" + "&id="+selected_id } 

id などのパラメーターを送信するには、 ajaxSelectOptions を使用できます。

ajaxSelectOptions:      //use this for combination with dataUrl for formatter:select
{       
    data: {
      id: function () {
          return selected_id;
      }
    }
},     

selected_id を返す関数は、追加/編集が発生するたびに実行されます。お役に立てれば !

于 2012-11-28T20:32:30.693 に答える
0

editoptions の代わりに searchoptions のコードを適用しました。ただし、最初のオプションを自動的に選択してリストをフィルタリングしていたので、それを軽減するために次を追加しました。

 $response ='<select>';
 $response .= '<option value=""></option>';
 while($row = $stmt->fetch(PDO::FETCH_NUM)) {
      $response .= '<option value="'.$row[0].'">'.$row[0].'</option>';
 }
 $response .= '</select>';

 echo $response;
于 2014-09-08T19:34:54.273 に答える