2017-11-11 7 views
0

グリッドビューを作成する必要があります。このグリッドビューにはJSONが自動的に作成されます。JSONデータソースを使用してASP.net gridviewにデータを埋め込む必要があります。

私はJSONフォルダを作成しました。完全に動作します。データを問題なく保存できます。

問題は私のJSONファイルをUSINGで自動的に入力するように私のASP.netで私のgridviewを作成しています。

ビジュアルスタジオの組み込みLINQウィザードを使用しようとしました...グリッドビューのヘッダーが作成されますが、フィールド自体は作成されませんでした。

2列の非常に単純なグリッドビューです。

私の現在のASP GridViewのコード:

<asp:GridView ID="GridView1" AutoGenerateColumns="False 
      " ShowHeaderWhenEmpty="True" EmptyDataText="No records Found" runat="server" DataSourceID="Grid" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"> 
      <Columns> 
       <asp:BoundField DataField="id" HeaderText="id" ReadOnly="True" SortExpression="id" /> 
       <asp:BoundField DataField="Title" HeaderText="Title" ReadOnly="True" SortExpression="Title" /> 
      </Columns> 
     </asp:GridView> 
     <asp:LinqDataSource ID="Grid" runat="server" ContextTypeName="BookCollection" EntityTypeName="" OrderBy="id, Title" Select="new (id, Title)" TableName="Books"> 
     </asp:LinqDataSource> 

以下の私のJSONの短いサンプルが(ただの属性を示す、唯一のATMつのエントリがあります)(合計2:。ID、およびタイトル)

{"Books":[{"id":1,"Title":"Harry Potter"}]} 

グリッドビューはブラウザで開くと読み込まれませんが、データソースが正しくリンクされていないか、ページの読み込み機能があるため、何をすべきかわからないためです。

私は何かを残してしまったので、私は非常に申し訳ありませんので、コーディングに非常に新しいと言うことができます。

助けがあれば幸いです。

+0

あなたは申し訳ありませんが、サーバ側 – derloopkat

+0

でのGridViewを移入しようとしているあなたがこれによって何を意味していますか?私たちに示してください。 – Joe

+0

私は、ビジュアルスタジオinbuiltデータソースを設定ウィザードのLINQオプションで使用しようとした後、私のJSONフォルダを選択しましたが、正しいヘッダはそこにありましたが、フィールドは入力されませんでした。 – Joe

答えて

0

jsonデータをデータソースとして直接割り当てるのではなく、データ型のようなテーブルが必要な場合は、代わりに新しいリストまたはデータテーブルを作成できます。この新しいリストまたはデータテーブルにjsonデータを入力し、GridViewのデータソースとして割り当てることができます。

jsonファイルの大きさによっては、この方法がうまくいくはずです。

+0

申し訳ありませんが、具体的にはJSONを使用する必要があります。 – Joe

+1

私はその場合、JSONデータを解析して、aspxファイルで行うのではなく、サーバーサイドコード(.aspx.csファイル)を使用してGridViewに割り当てることができると思います。私はこれを自分でやっていないが、私はそれを見つけただけで、これを行うための多くの例が見つかった。 –

1

あなたは、通常のテキストファイルと同じように、フィールド名とデータ型、文字列、整数など

次に、ページのロードイベントでTEAD RHE JSONファイルのようなあなたのJSON構造を表すクラスを作成します。

読み取ったjson文字列を以前に作成したクラスのリストにシリアル化し、データソースとしてgridviewに割り当てます。

LINQデータソースを削除しますが、私はちょうどそれを達成するためにどのようにコードサンプルを追加したい、このページの他の回答に同意

1

にそれを必要としません。私はあなたのaspxコントロールからDataSourceを取り除いていますので、コードの背後に設定します。

protected void Page_Load(object sender, EventArgs e) 
{ 
    string jsonString = "{\"Books\":[{\"id\":1,\"Title\":\"Harry Potter\"}, {\"id\":2,\"Title\":\"Bible\"}]}"; 
    var json = (new JavaScriptSerializer()).Deserialize(jsonString, typeof(BooksSource)); 
    GridView1.DataSource = ((BooksSource)json).Books; 
    GridView1.DataBind(); 
} 

背後

Webフォーム

<asp:GridView ID="GridView1" AutoGenerateColumns="False" 
     ShowHeaderWhenEmpty="True" EmptyDataText="No records Found" runat="server" 
     OnSelectedIndexChanged="GridView1_SelectedIndexChanged"> 
    <Columns> 
     <asp:BoundField DataField="Id" HeaderText="Id" ReadOnly="True" SortExpression="id" /> 
     <asp:BoundField DataField="Title" HeaderText="Title" ReadOnly="True" 
        SortExpression="Title" /> 
    </Columns> 
</asp:GridView> 

コード注:あなたのケースでは、あなたがFile.ReadAllText(path);場合や、ストリームを使用してのようなものではなく、テキストファイルからJSONを読み込むことがあります大きなファイルで作業します。

データソースクラス

public class BooksSource 
{ 
    public List<Book> Books { get; set; } 
} 

public class Book 
{ 
    public string Id { get; set; } 
    public string Title { get; set; } 
} 
+1

Joe、答えとしてマークしてください。私は電話で回答しており、コードを投稿できませんでした! ;) – Giox

関連する問題