我必须创建一个自动填充JSON的网格视图。
我已经创建了JSON文件夹,它完全可以工作,我可以保存数据没问题。
我现在的问题是让我的ASP.net中的gridview自动填充使用我的JSON文件的表单。
我尝试使用内置LINQ向导的可视工作室...它填充了gridview的标题,但不填充字段本身。
它是一个非常简单的有两列的网格视图。
我当前的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 :(得分:1)
创建一个表示json结构的类,如字段名称和数据类型,字符串,整数等。
然后在页面加载事件tead rhe json文件中,就像通常使用文本文件一样。
将您读过的json字符串序列化为先前创建的类列表,并将其作为数据源分配给gridview。
删除不需要它的linq数据源
答案 1 :(得分: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; }
}
答案 2 :(得分:0)
我相信,如果你想要一个像数据类型这样的表,你可以改为创建新的列表或数据,而不是直接将你的json数据作为数据源。您可以使用json数据填充此新列表或数据表,并将其指定为GridView的数据源。
根据您的json文件的大小,此方法应该可以正常工作。