Jqgridを使って、各種データの設定がやりやすくはなっているが、ひとつ問題が出てきた。
ResultSet rs2= stmt2.executeQuery("SELECT * FROM shokuin");
....
jQuery("#list").jqGrid({
data: mydata,
datatype: "local",
colNames:['ID', 'グループ名', 'メンバー'],
// 編集可能にするセルを editable:true にします。
colModel:[
{index:'num', name:'num', width:50 },
{index:'name', name:'name', width:200, editable:true },
{index:'member', name:'member', width:250, editable:true ,edittype:'select' ,
editoptions:{multiple:true,value:{
<% int cou2=0;
while(rs2.next()){ if(cou2==0) { %>
<%=rs2.getString("id")%>:'<%=rs2.getString("name")%>'
<% } else { %>
,<%=rs2.getString("id")%>:'<%=rs2.getString("name")%>'
<% }
cou2=cou2+1; }
stmt2.close();
%>
}}},
],
.....
といった、具合に、グループのメンバーの登録に使ってきたが、rs2は、id順に勝手にソートされてしまうことに気づいた。ソートはidではなく、別に用意したsidという表示順を指定するための番号でソートしたいのだが、それができない。
毎年、人の入れ替えで転入者にidが振られるが、そのidの順番で並べて表示するのでなく
sidで並べて表示したいと思い、SQL文にorder by sidを追加してが、だめなのである。
http://www.trirand.com/blog/?page_id=393/discussion/edittype-select-and-editoptions-value-default-sorting
ネットでは唯一上記のリンクに少しヒントらしきものはあったが、どうやら、dataUrlというものを指定して、別のサーブレットから指定した順序にソートしたものを読み出すとよいようだ。
そこで、editoptions以下の部分をこんなふうに書き換えたらなんとか、動作させることができた。
editoptions:{value:"",multiple:true,dataUrl:'editoption'}
サーブレットのeditoptionは、<select>の要素を返すようにするとよいようだ。ただ、注意しなければならないのは、LFが入ってしまうので、これをreplaceAll("\\n","")などを使って、データベースに保存する前に削除する必要がある。なかなか、細かいところで、調整が必要である。もう少しスマートな方法がありそうだが。
0 件のコメント:
コメントを投稿