2016-07-19 7 views
0
Im need to showing json data in asp.net's gridview (not html table) . I search a lot but i cant figure it out. I got code like this. 


function BindGridView() { 
     //Tabloyu oluşturma 
     $.ajax(
     { 
      type: "GET", 
      url: 'http://jsonplaceholder.typicode.com/users', 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      cache: false, 
      success: function (data) { 

       for (var i = 0; i < data.length; i++) { 
        $(".mainGridView").empty(); 
        $(".mainGridView").append('<tr><td class="' + i + '">' + data[i].name + '</td>' 
          + '<td>' + data[i].username + '</td></tr>'); 
       }; 



      }, 

      error: function (msg) { 

       alert(msg.responseText); 
      } 
     }) 
    }; 

<body onload="BindGridView();"> 
<form id="form1" runat="server"> 
<div> 

    <asp:GridView class="mainGridView" runat="server" /> 
     here it s style codes 
    </asp:GridView> 

</div> 
</form> 

Zeige JSON-Daten in der Datagridview asp.net

Ich habe versucht, JSON-Daten in HTML-Tabelle zeigt, wurde es gleiche Logik gearbeitet, aber in diesem Fall didnt mir helfen. Wenn ich diesen Code ausführen, gibt es mir keinen Fehler am Konsolenbildschirm und es zeigt nichts auf Browser, es ist saubere Seite.

Antwort

0

Die GridView Steuerung wird nicht auf der Seite machen, wenn Sie ein DataSource dafür gesetzt, bedeutet dies, das Gridview selbst erscheint nicht auf der Seite .So Ihren AJAX-Aufruf funktioniert 100% und bekommt die JSON zurück aber es kann das GridView-Steuerelement nicht finden, an das gebunden werden soll.

Um dieses Problem zu überwinden, können Sie einfach Ihre GridView gebunden an einen leeren DataSource gesetzt: hinter

Code:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Page.IsPostBack) 
    { 
     mainGridView.DataSource = new List<string>() { }; 
     mainGridView.DataBind(); 
    } 
} 

.ASPX:

<head runat="server"> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      BindGridView(); 
      function BindGridView() { 
       $.ajax(
       { 
        type: "GET", 
        url: 'http://jsonplaceholder.typicode.com/users', 
        data: "{}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        cache: false, 
        success: function (data) { 
         $(".mainGridView").empty(); 
         for (var i = 0; i < data.length; i++) { 
          $(".mainGridView").append('<tr><td class="' + i + '">' + data[i].name + '</td>' 
            + '<td>' + data[i].username + '</td></tr>'); 
         }; 
        }, 
        error: function (msg) { 
         alert(msg.responseText); 
        } 
       }) 
      }; 
     }); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:GridView ID="mainGridView" runat="server" CssClass="mainGridView" ShowHeaderWhenEmpty="true" EmptyDataText="No records found"> 
     </asp:GridView> 
    </form> 
</body> 

Ausgang :

Displaying AJAX call results in ASP.NET GridView

+0

Danke für die Antwort. Ich habe was falsch gemacht. –

Verwandte Themen