MVC :: Display JSON Object In JQuery Grid?
Jun 3, 2010I am working on ASP MVC 2 application. I have used the following jquery plugin & css
<link href="../../Content/ui.jqgrid.css" rel="stylesheet" type="text/css" />
I am working on ASP MVC 2 application. I have used the following jquery plugin & css
<link href="../../Content/ui.jqgrid.css" rel="stylesheet" type="text/css" />
I've created a simple (or what I thought was simple!) search form using Razor, MVC3 and the webgrid from the web helpers. I enabled paging, used a great article I found here to get that working... or so I thought. Basically what happens is that when I click the page buttons at the bottom of the grid it does something that I didn't expect, and creates a JSON object, then the browser prompts me to try and save it, and not as I expected to refill the grid. I can't see what I'm doing wrong, and before I break my monitor by throwing it onto the railway line!
[Code]....
My jQuery code
[Code]....
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication1.Models;
using System.Configuration;
using System.Web.Helpers;
namespace MvcApplication1.Controllers
{
public class SearchController : Controller
{
//
// GET: /Search/
Entities t = new Entities(ConfigurationManager.ConnectionStrings["Entities"].ConnectionString);
public ActionResult Details(int id)
{
Tender_Question q = (from x in t.Tender_Questions where x.Unique_ID_number == id select x).SingleOrDefault();
Customer c = (from cu in t.Customers where cu.CustomersID == q.Company select cu).SingleOrDefault();
ViewBag.Customers = c.CompanyName;
Panel_type pan = (from pa in t.Panel_types where pa.ID == q.Panel_type select pa).SingleOrDefault();
ViewBag.Panel = pan.Panel_type1;
return View(q);
}
[HttpGet]
public ActionResult Edit(int id)
{
Tender_Question q = (from x in t.Tender_Questions where x.Unique_ID_number == id select x).SingleOrDefault();
List<Customer> c = (from cu in t.Customers select cu).ToList();
ViewBag.Customers = c;
return View(q);
}
[HttpPost]
public ActionResult Edit(Tender_Question model)
{
if (ModelState.IsValid)
{
Tender_Question q = (from x in t.Tender_Questions where x.Unique_ID_number == model.Unique_ID_number select x).SingleOrDefault();
q.Answer = model.Answer;
q.Company = model.Company;
q.Customer = model.Customer;
q.Date = model.Date;
q.Page_Question_Ref = model.Page_Question_Ref;
q.Panel_type = model.Panel_type;
q.Question = model.Question;
q.Type_of_tender = model.Type_of_tender;
//add update code
t.SaveChanges();
return RedirectToAction("Index");
}
else
{
return View(model);
}
}
[HttpGet]
public ActionResult Search(int? page)
{
if (page.HasValue)
{
return RedirectToAction("EfficientPaging", new { page = page });
}
else
{
return View();
}
}
[HttpPost]
public ActionResult Search(int? page, FormCollection collection)
{
TempData.Clear();
IEnumerable<Tender_Question> q = getSearch(collection);
TempData.Add("Results", q);
return View(q);
}
private IEnumerable<Tender_Question> getSearch(FormCollection collection)
{
string question;
string answer;
IEnumerable<Tender_Question> q = t.Tender_Questions;
question = collection["Question"];
answer = collection["Answer"];
if (!string.IsNullOrEmpty(question))
{
if (question.EndsWith(","))
{
question = question.Substring(0, question.Length - 1);
} if (question.Length > 0)
{
if (question.Contains(","))
{
string[] questioned = question.Split(',');
foreach (string s in questioned)
{
q = q.Where(m => m.Question.Contains(s));
}
}
else
{
q = q.Where(m => m.Question.Contains(question));
}
}
}
if (!string.IsNullOrEmpty(answer))
{
if (answer.EndsWith(","))
{
answer = answer.Substring(0, answer.Length - 1);
}
if (answer.Length > 0)
{
if (answer.Contains(","))
{
string[] answered = answer.Split(',');
foreach (string s in answered)
{
q = q.Where(m => m.Answer.Contains(s));
}
}
else
{
q = q.Where(m => m.Answer.Contains(answer));
}
}
}
return q;
}
[HttpGet]
public ActionResult EfficientPaging(int? page)
{
IEnumerable<Tender_Question> q = (IEnumerable<Tender_Question>)TempData["Results"];
int skip = page.HasValue ? page.Value - 1 : 0;
q = q.OrderBy(o => o.Unique_ID_number).Skip(skip * 10).Take(10).ToList();
var grid = new WebGrid(q);
var column = new WebGridColumn();
column.CanSort = false;
column.ColumnName = "Unique_ID_number";
column.Header = "Edit";
column.Format = (item) =>
{
return new HtmlString("<a href="/Home/Edit/" + column.ColumnName + "">Edit</a> ");
};
var detcolumn = new WebGridColumn();
detcolumn.CanSort = false;
detcolumn.ColumnName = "Unique_ID_number";
detcolumn.Header = "Details";
detcolumn.Format = (item) =>
{
return new HtmlString("<a href="/Home/Details/" + column.ColumnName + "">Details</a> ");
};
var htmlString = grid.GetHtml(htmlAttributes: new { id = "DataTable" }, columns: grid.Columns(
column, detcolumn,
grid.Column("Question"),
grid.Column("Answer"),
grid.Column("Company"),
grid.Column(columnName: "Type_of_tender", header: "Type of Tender"),
grid.Column(columnName: "Panel_type", header: "Panel type"),
grid.Column(columnName: "Page_Question_Ref", header: "Page Question Ref"),
grid.Column("Date")
));
return Json(new
{
Data = htmlString.ToHtmlString(),
Count =q.Count() / 10
}, JsonRequestBehavior.AllowGet);
}
}
}
This is the javascript code i tried to export my grid data in json. it throws an exception and i can't figure out why. when i downloaded the jqgrid i checked the import/export module. I want to insert the json in a hidden field in order to get the data on the server side for validating and saving.
$('#proveObjekt2').val(JSON.stringify($("#rowed5").jqGridExport("jsonstring")));
...
<asp:HiddenField ID="proveObjekt2" runat="server" />
I've been following tutorials. I got a problem while attempting to try your sample,
Here is the sql syntax that i emulated from one of your tutorials
USE [arrestedpersonsdb]GO/****** Object: StoredProcedure [dbo].[stnencodedtodisplay]
Script Date: 08/10/2013 15:57:50 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================--
Author: <Author,,Name>-- Create date: <Create Date,,>--
Description: <Description,,>-- =============================================
CREATE PROCEDURE [dbo].[stnencodedtodisplay]
( @PageIndex INT = 1 ,@PageSize INT = 10 ,@RecordCount INT OUTPUT ,@id int ,
[Code] ....
If I use the first two parameter namely stnid and type it returns as expexted but when i try to add another parameter sample below:
USE [arrestedpersonsdb]GO
DECLARE @return_value int, @RecordCount int
EXEC @return_value = [dbo].[stnencodedtodisplay] @PageIndex = 1, @PageSize = 10, @RecordCount = @RecordCount OUTPUT, @id = 1599, @fname = 'ALDRIN', @lname = ''
SELECT @RecordCount as N'@RecordCount'
SELECT 'Return Value' = @return_value
GO
it doesn't return anything is it because the data being returned is a single row or this type of query doesn't allow multiple parameters...
I have a list of person objects which I want to send in response to a jquery' ajax request. I want to send the list into JSON format. The list is as follows -
List<Person> PersonList = new List<Person>();
Person Atiq = new Person("Atiq Hasan Mollah", 23, "Whassap Homie");
Person Sajib = new Person("Sajib Mamud", 24, "Chol kheye ashi");
PersonList.Add(Atiq);
PersonList.Add(Sajib);
How can I convert the "PersonList" list into JSON ?
I would like to get a field value using an index on an json object.
The json object looks like : {PartList:[{Field1:"echo",Field2:"bravo"},{Field1:"yes",Field2:"no"}]}
I know that if I would like to have the Field1 value it is on the index 0, and for example for the first item in the array:
jsonObject.PartList[0][0] , here the first index is working but the second index given is not. But is it possible to do this ?
I'm new to Jquery, JSON and MVC, and am trying to create a json object that contains AD info from an AD query. The ad query is working fine and returning data and I have 2 overloaded implementations of it.
#1 is a method from an older .net app that builds and returns a datatable that we bound to a grid view control
#2 was a modification of #1 that returns a System.Collections.Generic.List<> type. #2 returns data ok and i can display a table in the MVC view
however, I'd like to get the data results into a json object so i can bind it to a jqGrid object that has similar functionality to the old .Net server controls (Delete, Update, Sort) Here's the new method that's part of a C# static class:
[Code]....
Like I said...I'm new to this way of doing web development, so I'm not sure how to even approach getting this data into a json object.
i am searching for a way to create a grid (from some kind of jquery grid plugin didnt choose one yet)
anyway i want to call a webmethod and return a json serialized from a List of an object i created.
today i just use a regular grid view inside an iframe
but i want to eliminate that iframe and create those grids with ajax requests.
how to save multile rows in grid view using jqery json
View 4 RepliesI have dropdown in the aspx page. I am calling JQuery on dropdown chnage and JQuery is calling GenericHandler.ashx . The Handler is retuns Serialize JSON string. I ned to bind my Repeater control with this JOSN object. here I am giving my sample aspx page code
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
[Code]....
I am trying to build a page which consists of different user controls which is divided in 3 columns.I have created a custom class for the page and widgets where the user controls will be loaded in. The custom class needs to be stored in an XML file, and using jQuery sortable for drag-and-drop functionality.At this point, my question is what is the best implementation for loading and saving the states of the page and widgets inside the page? I was thinking about using JSON and WebMethod for that, but I am still missing out the architecture on how I should build the page
View 1 RepliesI have an ASP.NET webservice method that returns a generics list (List'<'Construct>) serialized as JSON, using code such as this:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class TestService : System.Web.Services.WebService {
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetOccupationListJSON(int SOCLevel)
{
Construct NewConstructList = new ConstructList();
DataContractJsonSerializer serializer = new DataContractJsonSerializer(ConstructList.GetType());
MemoryStream ms = new MemoryStream();
[Code]....
I assumed (from looking elsewhere) that accessing the JSON data through the index would provide me with access to the underlying object at that index, so that I can then work with it to access its properties.
However, when i=0 and I do var Construct = data[i]; I get the character at the i position of the data array ([), and in the next iteration I get the second character ({). So clearly I am accessing the elements of a string array rather than the JSON data object.How do I make sure that the data returned by the webservice gets into proper JSON format, so that I can iterate through the object elements within it?
I am using the local database in web kit browsers and to get the data from the database I have the following code:
function synchronise() {
myDB.transaction(
function (transaction) {
transaction.executeSql("SELECT * FROM Patients;", [], synchroniseHandler, errorHandler);
}
);
[Code]....
I use the JavaScriptSerializer class of ASP.net to serialize my object and return it to the client side. How can I deserialize the string using JavaScript?
View 4 RepliesI want to send single json object with nested arrays through jquery ajax method.
In Code
In jquery ajax i am passing LeaveRuleMaster a single json object which holds some properties (Leavetypeid, Leavename, Leavestatus and nested array LeaveRulespecific.
In vb.net code i can receive the value of properties(Leavetypeid,Leavename,Leavestatus)
but i am receiving the LeaveRuleSpecific as nothing.
Based on the following link i tried this [URL] .....
I would like to display totals row for my jQuery Grid without grouping and I'm using summaryType: 'sum' for each column.let me know what else does it require to be done??
View 6 Repliesi want to make a twitter like registration form using jquery and save data in database and display it in a grid after submitting data.this is what i got on net
<script src="Script/jquery-1.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#.addbutton").click(function () {
[Code]....
am using asp.net mvc.. i have db2 database with one table..... i have a stroed procedure with input parmater as useridi need to pass userid to get all the results from table to display in jquery grid on UIplease
View 4 RepliesI've scenario where I want to insert data into database without post back. there are around 12 to 13 fields which i need to insert. I'm passing DTO from the client side which is actually Json object. Now the problem which i'm facing is how to convert that Json object which i got in webservice to the "class" (in my case class name is User) object.
[Code]....
In the above case AddNewUser method takes the object of User class. But i'm getting casting error. So how do I convert Json object to the "User" class object?
Is there an easy way to populate my C# Object with the JSON object passed via AJAX?
//This is the JSON Object passed to C# WEBMETHOD from the page using JSON.stringify
{"user":{"name":"asdf","teamname":"b","email":"c","players":["1","2"]}}
//C# WebMetod That receives the JSON Object
[WebMethod]
public static void SaveTeam(Object user)
{
}
//C# Class that represents the object structure of JSON Object passed in to the WebMethod
public class User
{
public string name { get; set; }
public string teamname { get; set; }
public string email { get; set; }
public Array players { get; set; }
}
In MVC3 Beta version i have action result same like
public ActionResult Save(Dictionary<string, string> dicObject)
I want to pass JSON Object in POST Method from javascript and need to get as dictionary object
How can i do this? can you write example if possible?
how to save and retrive date in database using jquery ajex asp.net ,JSOn,XML
View 2 RepliesThe stored proc fired to populate my grid view gets a column CasNo.The GridView has a DataBound item for CaseNo.
[Code]....
Then Why does this get null value: string caseNo = dataRow["CaseNo"] as string;
[Code]....
[Code]....
my requirement is i want grridview textbox template save using jquery json how to do it
View 2 RepliesI am calling an action from JQuery using $.getJSON() method.
This action returns a JsonResult object.
I am getting all the values correctly but not the Date Format.
Below is the Date format which i am getting.
/Date(1287587195000)/
/Date(1287587195000)/
But i want it like "10/15/2010 11:56 AM" this format.
How can i achieve it...