2017-11-11 95 views
0

我必須創建一個自動填充JSON的gridview。需要幫助填充使用C中的JSON數據源的ASP.net gridview#

我已經創建了JSON文件夾,它可以完全工作,我可以將數據保存到它沒有問題。

我現在正在使用我的ASP.net中的GridView來自動填充使用我的JSON文件的表單。

我已經嘗試使用視覺工作室內置的LINQ嚮導...它填充了gridview的標題,但不是字段本身。

它是一個非常簡單的gridview有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,只是顯示屬性)(共兩個:id和標題)

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

我的gridview在瀏覽器中打開時沒有加載,但我假設這是因爲數據源尚未正確鏈接或者有頁面加載功能,因爲我不知道該怎麼做。

正如你可以告訴我很新的編碼,如果我遺漏任何東西,很抱歉。

任何幫助將非常感激。

+0

請告訴我們您曾經試圖填充在服務器端 – derloopkat

+0

對不起你這是什麼意思GridView的是什麼? – Joe

+0

我說我嘗試使用配置嚮導LINQ選項的視覺工作室內置數據源,然後選擇我的JSON文件夾,並且正確的標題在那裏,但是字段沒有填充。 – Joe

回答

0

我相信不是直接將json數據分配爲數據源,而是您可以創建一個新列表或一個datable,如果您想要一個類似數據類型的表。你可以用你的json數據填充這個新的列表或數據表,並將其分配爲GridView的數據源。

根據你的json文件有多大,這個方法應該工作正常。

+0

很抱歉,它特別要使用JSON。 – Joe

+1

我認爲在這種情況下,您可以解析json數據並將其分配給使用服務器端代碼(.aspx.cs文件)的GridView,而不是在aspx文件中執行。我自己並沒有這樣做,但我只是搜索了它,並找到了很多例子來做到這一點。 –

1

創建表示JSON結構的一類,如字段名和數據類型,字符串,整數等

然後在頁面加載事件TEAD RHE JSON文件,即可正常使用文本文件做。

將您已閱讀的json字符串序列化到先前創建的類的列表中,並將其作爲數據源指定給gridview。

取出LINQ數據源,你不需要它

1

我同意此頁面上的其他答案,只是想就如何實現這一添加代碼示例。我將從您的aspx控件中刪除DataSource,因爲我將它置於代碼後面。

網絡表單

<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> 

背後

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

代碼請注意:你的情況,你會從一個文本文件中讀取JSON代替,喜歡的東西File.ReadAllText(path);或使用流。如果你使用大文件。

數據源類

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

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

喬,將其標記爲答案。我已通過電話回覆,無法發佈代碼! ;) – Giox

相關問題