1

データベースによって入力されたグリッドがあります。列の 1 つは、別のテーブルの 2 つの列の連結です。この場合、それはチームの場所と名前です。ただし、編集をクリックして編集フォームに入力すると、データベース内の実際のチームではなく、ドロップダウンの最初のチームが常に選択されます。

関連するコードの一部を次に示します。

jQuery("#listPlayer").jqGrid({
    url:'../controller/playerGrid.php',
    datatype: "json",
    colNames:['ID','First Name','Last Name', 'Team'],
    colModel:[
            {name:'id',         index:'id',         width:20,   editable:false, hidden:true},
            {name:'first_name', index:'first_name', width:80,   editable:true, editrules: {required: true}},
            {name:'last_name',  index:'last_name',  width:80,   editable:true, editrules: {required: true}},
            {name:'idTeam',     index:'idTeam',     width:50,   editable:true, editrules: {required: true}, edittype: 'select', editoptions: { dataUrl: "../controller/listTable.php?query=team" } }
    ],
    rowNum:50,
    rowTotal: 2000,
    rowList : [20,30,50],
    mtype: "POST",
    rownumbers: true,
    rownumWidth: 40,
    gridview: true,
    pager: '#pagerPlayer',
    sortname: 'last_name',
    viewrecords: true,
    sortorder: "asc",
    caption: "Player Manager",
    editurl: "../controller/playerEditGrid.php"

listTable.php の SQL クエリは次のようになります。

SELECT t.id, CONCAT(t.location, ' ', t.name,' (', l.abbr, ')' ) as idTeam FROM team t, league l WHERE t.idLeague = l.id ORDER BY t.location

問題は、単一の列ではなく連結であるという事実にあることは知っていますが、それを回避する方法があると確信しています...私はそれを知りません。

4

1 に答える 1

1

私はこのように使用していませんが、jqgrid ヘルプの次の部分があなたのケースに当てはまるはずです: http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules#select

dataurl からの戻り値は、次のような有効な HTML select 要素である必要があります。

<select> 
<option value='1'>One</option> 
<option value='2'>Two</option> 
...
</select>

参照3.上記の URL でeditoptions dataUrl パラメータを設定します。

お役に立てれば!

于 2012-04-26T23:10:53.353 に答える