Преобразование строки в json, отправка результата в сетку kendo ui

Я хочу создать динамическую сетку, которая автоматически создает столбец динамически. Я использую WebAPi, чтобы вернуть результат

public dynamic SqlDataReaderToExpando(System.Data.Common.DbDataReader reader)
        {
            var expandoObject = new ExpandoObject() as IDictionary<string, object>;

            for (var i = 0; i < reader.FieldCount; i++)
                expandoObject.Add(reader.GetName(i), reader[i]);

            return expandoObject;
        }

         public IEnumerable<dynamic> GetDynamicSqlData()
        {

            using (var cps = new CPS.Entities.CPSContext())
            {
                using (var cmd = cps.Database.Connection.CreateCommand())
                 {
                    cps.Database.Connection.Open();
                    cmd.CommandText = "dbo.SP_CPSPortalModuleRoles";
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    System.Data.SqlClient.SqlParameter param = new      System.Data.SqlClient.SqlParameter();
                    param.Value = Guid.Empty;
                    param.ParameterName = "ModuleId";
                    cmd.Parameters.Add(param);

                    using (var reader = cmd.ExecuteReader(System.Data.CommandBehavior.SequentialAccess))        //System.Data.CommandBehavior.SequentialAccess
                    {
                        while (reader.Read())
                        {
                            yield return SqlDataReaderToExpando(reader);
                        }
                    }
                }
            }
        }

        public HttpResponseMessage GetRoleDetail()
        {
            HttpResponseMessage response = new HttpResponseMessage();
            try
            {

                RoleItem collSelect = new RoleItem();

                IEnumerable<dynamic> collItem = null;
                collItem = GetDynamicSqlData().ToList();

                collSelect.Item = collItem;
                JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
                javaScriptSerializer.RegisterConverters(new JavaScriptConverter[] { new ExpandoJsonConverter() });
                string jsonOfTest = javaScriptSerializer.Serialize(collSelect);

                response.Content = new ObjectContent<string>(jsonOfTest, new JsonMediaTypeFormatter(), Mime.AppJson);
                response.StatusCode = HttpStatusCode.OK;

            }
            catch (Exception ex)
            {
                response.StatusCode = HttpStatusCode.ExpectationFailed;
                response.Headers.Add(Verb.ExceptionMessage, ex.Message.ToResponseString());
                response.Headers.Add(Verb.ExceptionStackTrace, ex.StackTrace.ToResponseString());
            }

            return response;
        }

Здесь я получаю все данные сетки, которые должны отображаться динамически из хранимой процедуры.

Это похоже на прокси-слой, где я получаю данные от службы, как это.

        public String GetRoleMappings()
        {
             RoleItem collection = null;
             string data1 = "";
            try
            {
                using (HttpClient httpClient = new HttpClient())
                {
                    Task<HttpResponseMessage> tskResponse = (httpClient.GetAsync(uri + @"/GetRoleDetail/"));

                    if (!tskResponse.IsFaulted)
                    {
                        HttpResponseMessage response = tskResponse.Result;
                        response.EnsureSuccessStatusCode();

                        string data = response.Content.ReadAsStringAsync().Result;                        
                        data1 = JsonConvert.DeserializeObject<string>(data, ServiceUtility.JsonSettings);

                        string data2 = JsonConvert.DeserializeObject<string>(data1, ServiceUtility.JsonSettings);

                    }
                }
            }
            catch (Exception ex)
            {
                logger.LogError(ex);
            }

            return data1;
        }

Это вернулось к моему клиентскому контроллеру, где я хочу выбросить эти данные в свою сетку пользовательского интерфейса kendo как Json, здесь я получаю как строковые данные, но хочу проанализировать json без сериализации.

public ActionResult GetRoleMapping([DataSourceRequest] DataSourceRequest request)
        {

            JsonResult jsonResult = null;
            string s = objService.GetRoleMappings();

            //JsonResult jsonResult = null;
            //jsonResult = Json(objModel.Item.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
            //var subItems = _subItems.Where(o => o.ItemId == itemId);
            //DataSourceResult result = objModel.ToDataSourceResult(request);
            //return s;
            return Content(s);
            //return new stringContent( (s, "application/json");
            //return Json(jsonResult);
        }  

Пожалуйста, помогите мне с предложением. Мне нужно использовать хранимую процедуру. Заранее спасибо,

1 ответ

Вы используете обертки MVC? Если вы используете веб-версию (JS), вы можете попытаться использовать функцию schema.parse для перехвата и анализа этой длинной строки в массиве JSON.

Другие вопросы по тегам