How to convert and
bind JSON string in to asp.net GridView with c# without help of looping and
object mapper class (wrapper)?
Requirement: - If
we don`t know about json string/object, how many columns are there and no any
idea of column name, In this case we can`t able to create a c# class for object
deserializeObject, I mean wrapper class. Here requirement is bind gridview from
json object without ajax/jquery and looping in c# and without wrapper class.
1.
Create a web application in visual studio
2.
Right
click on project and add a web form by click on "Web Form".
3.
After
that open a windows popup in this enter your Web Form name and click on
"Add" button.
4.
Open your
web form .aspx source/design part and go to ToolBox and drag & drop asp.net
gridview control in to web form and set gridview style as per your requirement.
5.
Here way
to bind gridview from JSON following:
a.
Using
dynamic keyword with JsonConvert.DeserializeObject, here you need to import
Newtonsoft.Json
b.
Using DataTable with
JsonConvert.DeserializeObject, here you need to import using System.Data;
Dynamic:
This is a data type, dynamic data type introduced since .Net
Framework 4.0. The dynamic data type allows you to perform any operations and
will be resolved at run time. It does not require explicit type casting for any
operation at run-time, because it identifies the types at run-time only.
Dynamic type can be passed as function argument and function also can return
object type. Useful when coding using reflection or dynamic language support or
with the COM objects, because we require to write less amount of code.
[http://www.c-sharpcorner.com/blogs/variable-object-and-dynamic-data-type-in-c-sharp1]
DataTable:
In .NET, it's a class that represents a table of in-memory
data.
CODE
.ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="BindJosn2Grid.aspx.cs" Inherits="BindJSON2ASPDOTGridView.BindJosn2Grid" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h2>Bind GridView From JSON Object (Converted In to Dynamic
Object [dynamic keyword])</h2>
<asp:GridView ID="grdJSON2Grid" runat="server" BackColor="White" BorderColor="#3399ff"
BorderStyle="Dotted" BorderWidth="1px" CellPadding="3" GridLines="Both"></asp:GridView>
<br />
<br />
<h2>Bind GridView From JSON Object (Converted In to DataTable
Object [DataTable])</h2>
<asp:GridView ID="grdJSON2Grid2" runat="server" BackColor="White" BorderColor="#3399ff"
BorderStyle="Dotted" BorderWidth="1px" CellPadding="3" GridLines="Both"></asp:GridView>
</div>
</form>
</body>
</html>
.CS
protected void Page_Load(object sender, EventArgs e)
{
//Random
json string, No fix number of columns or rows and no fix column name.
string myDynamicJSON = "[{'Member
ID':'00012','First Name':'Vicki','Last Name':'Jordan','Registered
Email':'vicki.j @tacinc.com.au','Mobile':'03 6332
3800','MailSuburb':'','MailState':'','MailPostcode':'','Engagement':'attended
an APNA event in the past and ventured onto our online education portal APNA
Online Learning','Group':'Non-member'},{'Member ID':'15072','First
Name':'Vicki','Last Name':'Jordan','Registered Email':'vicki.j
@tacinc.com.au','Mobile':'03 6332
3800','MailSuburb':'','MailState':'','MailPostcode':'','Engagement':'attended
an APNA event in the past and ventured onto our online education portal APNA
Online Learning','Group':'Non-member'}]";
//Using
dynamic keyword with JsonConvert.DeserializeObject, here you need to import
Newtonsoft.Json
dynamic myObject = JsonConvert.DeserializeObject(myDynamicJSON);
//Binding
gridview from dynamic object
grdJSON2Grid.DataSource = myObject;
grdJSON2Grid.DataBind();
//Using
DataTable with JsonConvert.DeserializeObject, here you need to import using
System.Data;
DataTable myObjectDT = JsonConvert.DeserializeObject<DataTable>(myDynamicJSON);
//Binding
gridview from dynamic object
grdJSON2Grid2.DataSource = myObjectDT;
grdJSON2Grid2.DataBind();
}