2017-11-11 96 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

相关问题