1

表形式でデータを表示するために JQGRID を使用しています。サーブレットから jqgrid のデータに正常にアクセスしました。XML をデータ型として使用しています。

私の質問は、列名を配列として渡すにはどうすればよいですか? これまでのところ、javascript から手動で列に名前を付けることで、jqgrid のレコードを diaplya することができます。しかし、データベースから列名を取得し、配列として jqgrid に渡したいと考えています。

以下は私のコードスニペットです:

<script language="javascript">
        function fillGridOnEvent()
        {
            $("#jQGrid").html("<table id=\"list\"></table><div id=\"page\"></div>");
            jQuery("#list").jqGrid({
                url:'<%=request.getContextPath()%>/JQGridServlet?q=1&action=fetchData',
                datatype: "xml",
                height: 250,
              colNames:['Sr. No.','Student Name','Student Std.','Student RollNo.',"Action"],
                colModel:[{name:'srNo',index:'srNo', width:90,sortable:true},
                          {name:'stdName',index:'stdName', width:130,sortable:false},
                          {name:'stdStd',index:'stdStd', width:100,sortable:false},
                          {name:'stdRollNo',index:'stdRollNo', width:180,sortable:false},
                          {name:'view',index:'view', width:100,sortable:false}
                          ],
                multiselect: false,
                paging: true,
                rowNum:10,
                rowList:[10,20,30],
                pager: $("#page"),
                loadonce:true,
                caption: "Table1"
            }).navGrid('#page',{edit:false,add:false,del:false});
        }
        jQuery().ready(function (){
            //fillGrid();
        });
    </script>

サーブレット:

protected void showData(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{    
    PrintWriter out = response.getWriter();
            response.setContentType("text/xml;charset=UTF-8");               
            String rows = request.getParameter("rows");
            int totalPages = 0;
            int totalCount = 15;
            if (totalCount > 0) 
            {
                if (totalCount % Integer.parseInt(rows) == 0) 
                {
                    totalPages = totalCount / Integer.parseInt(rows);
                } 
                else
                {
                    totalPages = (totalCount / Integer.parseInt(rows)) + 1;
                }
            } 
            else 
            {
                totalPages = 0;
            }
            out.print("<?xml version='1.0' encoding='utf-8'?>\n");
            out.print("<rows>");
            out.print("<page>" + request.getParameter("page") + "</page>");
            out.print("<total>" + totalPages + "</total>");
            out.print("<records>" + 15 + "</records>");
            int srNo = 1;
            for (int i=0;i<15;i++) 
            {
                out.print("<row id='" + i + "'>");
                out.print("<cell>" + srNo + "</cell>");
                out.print("<cell>ABCDEFG</cell>");
                out.print("<cell>ABC</cell>");
                out.print("<cell>125</cell>");
                out.print("</row>");
                srNo++;
    }
            out.print("</rows>");
}

上記のサーブレットではデータを送信できましたが、サーブレットから列名も設定したいと思います..何かアイデアはありますか?

4

1 に答える 1

2

jQgrid の初期化中およびデータのロードを呼び出す前に、列の名前を渡すために別のプロセス/サーブレットを設定する必要があります。

列名のデータをページに渡すと、列名を含む var 配列をセットアップして、それをcolNames:プロパティに割り当てることができます。

于 2013-01-04T13:32:23.047 に答える