需要帮助填充使用C中的JSON数据源的ASP.net gridview#
我必须创建一个自动填充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在浏览器中打开时没有加载,但我假设这是因为数据源尚未正确链接或者有页面加载功能,因为我不知道该怎么做。
正如你可以告诉我很新的编码,如果我遗漏任何东西,很抱歉。
任何帮助将非常感激。
我相信不是直接将json数据分配为数据源,而是您可以创建一个新列表或一个datable,如果您想要一个类似数据类型的表。你可以用你的json数据填充这个新的列表或数据表,并将其分配为GridView的数据源。
根据你的json文件有多大,这个方法应该工作正常。
很抱歉,它特别要使用JSON。 – Joe
我认为在这种情况下,您可以解析json数据并将其分配给使用服务器端代码(.aspx.cs文件)的GridView,而不是在aspx文件中执行。我自己并没有这样做,但我只是搜索了它,并找到了很多例子来做到这一点。 –
创建表示JSON结构的一类,如字段名和数据类型,字符串,整数等
然后在页面加载事件TEAD RHE JSON文件,即可正常使用文本文件做。
将您已阅读的json字符串序列化到先前创建的类的列表中,并将其作为数据源指定给gridview。
取出LINQ数据源,你不需要它
我同意此页面上的其他答案,只是想就如何实现这一添加代码示例。我将从您的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; }
}
乔,将其标记为答案。我已通过电话回复,无法发布代码! ;) – Giox
请告诉我们您曾经试图填充在服务器端 – derloopkat
对不起你这是什么意思GridView的是什么? – Joe
我说我尝试使用配置向导LINQ选项的视觉工作室内置数据源,然后选择我的JSON文件夹,并且正确的标题在那里,但是字段没有填充。 – Joe