EDUDOTNET

Friday, April 28, 2017

How to convert and bind JSON string in to asp.net GridView with c# without help of looping and object mapper class (wrapper)?



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();
       
        }




2 comments: