加载colModel&时无法在jqGrid中显示数据colName动态

时间:2015-07-31 11:55:24

标签: jquery jqgrid

我使用jqGrid来显示数据。在我当前的网格中,所有列都是动态的。它来自网络服务。 我调用了$ .ajax调用来获取colNames和colModel之后我将colNames和colModel设置为jqGrid。

我发现网格显示空行(除行号外没有数据),页面显示正确。但它没有显示数据。

enter image description here

这是我的服务端代码。

 [ScriptMethod(ResponseFormat = ResponseFormat.Json), WebMethod(EnableSession = true)]
        public code.jqGridColumns GetColumnForSQLQuery()
        {
            System.Collections.Specialized.NameValueCollection QueryString = HttpContext.Current.Request.QueryString;
            string Sql = String.Empty;
            string dbName = String.Empty;
            if (QueryString.Count > 0)
            {
                Sql = QueryString["Sql"].ToString();
                dbName = QueryString["dbName"].ToString();
            }
            if (Sql.Contains("where"))
                Sql = Sql + " and 1=2";
            else
                Sql = Sql + " where 1=2";

            string connectionString = "data source = " + General.DBServer + "; initial catalog=" + dbName + ";Integrated security=false;User ID=" + General.SqlUserName + "; password=" + General.SqlPassword;
            databaseDataContext db = new databaseDataContext(connectionString);
            SqlCommand cmd = new SqlCommand(Sql, db.Connection as SqlConnection);
            if (cmd.Connection.State != ConnectionState.Open)
                cmd.Connection.Open();
            System.Data.SqlClient.SqlDataReader dReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
            DataSet dSet = null;
                dSet = new DataSet();
                dSet.Load((IDataReader)dReader, LoadOption.OverwriteChanges, "data");
            dReader.Close();
            dReader.Dispose();
            DataTable dTable = new DataTable("Columns");
            dTable.Columns.Add("ColumnName");
            dTable.Columns.Add("Caption");
            code.jqMetaData meta = new jqMetaData();
            foreach (DataColumn column in dSet.Tables[0].Columns)
            {
                meta.ColModels.Add(new ColModel(column.ColumnName, column.ColumnName));
                meta.ColNames.Add(new ColName(column.ColumnName)); 
            }
            code.jqGridColumns jqMetaData = new jqGridColumns();
            jqMetaData.jqColNames = meta.GetColNames();
            jqMetaData.jqColModels = meta.GetColModels();
            return jqMetaData;
        }

根据我在jqGrid中的技巧,它会正确返回数据。

这是我的JavaScript代码段。

 var colM = [];// '[' + data.d.jqColModels + ']';
            var colN = [];//'[' + data.d.jqColNames + ']';
            colM = data.d.jqColModels.split('INECOM');
            colN = data.d.jqColNames.split('INECOM');
            var ServiceUrl = $.session.get("ClientURL") + '/GetDataBySqlQuery?dbName=' + $.session.get('dbName') + "&Sql=" + FMS;
            $("#uxData").jqGrid({
                url: ServiceUrl,
                datatype: 'xml',
                mtype: 'GET',
                colNames: colN,//['CardCode']//
                colModel: colM,//[{name:'CardCode',index:'CardCode'}], //
                loadError: function (xhr, status, error) {
                    $(this).HideBusy();
                    alert(xhr.responseText);
                }
       ...
       ...
});

有关额外信息,我附上一些屏幕截图以获得清晰的想法。 enter image description here

在对jqGrid进行更多调查之后,我观察到jqGrid解析了这些模型并做好准备,我还观察到我做了一些我不理解的事情,但我确信它从colModel中提取信息并命名为:'somevalue',index :'somevalue'有点......

我的数据从网络服务返回有什么问题吗?

FYI

enter image description here

0 个答案:

没有答案