JQGrid с веб-сервисом не загружает данные - PullRequest
1 голос
/ 09 февраля 2012

Я использую JQGrid в приложении .net.Я использовал примеры кода онлайн, он не выдает никакой ошибки, но он не работает или не уверен, что я делаю неправильно.Может ли кто-нибудь, кто работал над JQgrid, прежде, чем просмотреть мой код и показать мне, что я делаю неправильно.Я могу войти в код на стороне сервера, и он не выдает никаких ошибок. Действительно не совсем уверен, что я делаю неправильно.

Вот страница aspx:

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<link rel="stylesheet" type="text/css" media="screen" href="jquery-ui-1.8.17.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="ui.jqgrid.css" />

    <script src="jquery.js" type="text/javascript"></script>

    <script src="grid.locale-en.js" type="text/javascript"></script>

    <script src="jquery.dataTables.min.js" type="text/javascript"></script>

    <script src="jquery.jqGrid.min.js" type="text/javascript"></script>

Вызовсетка загрузки

    <script type="text/javascript">
        jQuery(document).ready(function() {
            jQuery("#list").jqGrid({
                type: "GET",
                url: "MyService.asmx/GetRecipie",
                contentType: "application/json; charset=utf-8",
                dataType: "json",

                colNames: ['Inv No', 'Date', 'Amount'],
                colModel: [
      { name: 'job_id', index: 'job_id', width: 55 },
      { name: 'job_num', index: 'job_num', width: 90 },
      { name: 'order_num', index: 'order_num', width: 80, align: 'right'}],
                pager: jQuery('#pager'),
                rowNum: 10,
                rowList: [10, 20, 30],
                sortname: 'id',
                sortorder: "desc",
                viewrecords: true,
                imgpath: 'themes/basic/images',
                caption: 'My first grid',
                loadError: Error

            });
        });

        function Error(xhr, st, err) {
            jQuery("#rsperror").html("Type: " + st + "; Response: " + xhr.status + " " + xhr.statusText);
        }


    </script>

</head>
<body>
    <table id="list" class="scroll">
    </table>
    <div id="pager" class="scroll" style="text-align: center;">
    </div>
</body>
</html>

Мой веб-сервис

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = false)]
        public string GetRecipie()
        {
            string strQuery = "SELECT * FROM job where job_id like '%2345%'";
            DataTable dtRecipie = null;
            Recipie objRecipie = default(Recipie);
            SqlConnection con = new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;DATABASE=TESTDB;Data Source=SQL;");
            using (con)
            {
                con.Open();
                using (SqlDataAdapter sqlAdapter = new SqlDataAdapter(strQuery, con))
                {
                    dtRecipie = new DataTable();
                    sqlAdapter.Fill(dtRecipie);
                }
            }
            List<Recipie> drlist = new List<Recipie>();
            foreach (DataRow dr in dtRecipie.Rows)
            {
                objRecipie = new Recipie();
                objRecipie.jobId = Convert.ToInt32(dr["job_id"].ToString());
                objRecipie.JobNumber = dr["job_num"].ToString();
                objRecipie.OrderNumber = dr["order_num"].ToString();
                drlist.Add(objRecipie);
            }

            JavaScriptSerializer jSearializer = new JavaScriptSerializer();
            return jSearializer.Serialize(drlist);

        }
    }


    public class Recipie
    {
        public int jobId;
        public string JobNumber;
        public string OrderNumber;
    }


}

1 Ответ

0 голосов
/ 10 февраля 2012

1 - Вы сериализуете список своих сущностей, не меняя их на формат, понятный jqgrid.

Вы должны вернуть Json, который выглядит следующим образом:

{ 
    "page":"1",
    "total":4,
    "records":"10",

    "rows":[
        {"id":"1","cell":["Prabir","Shrestha"]},
        {"id":"2","cell":["Bill","Gates"]},
        {"id":"3","cell":["Steve","Ballmer"]}
    ] 
}

Из: http://blog.prabir.me/post/Using-jqGrid-with-ASPNET-Web-Forms-e28093-Part-I.aspx. Этот сайт объясняет, как вы можете конвертировать ваши данные в этот формат.

Есть и другая вещь, в вашем веб-сервисе вы используете UseHttpGet = false, пока вы инициализируете jqgrid с помощью type: "GET".Вам нужно изменить один из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...