需要帮助在c#

时间:2017-11-11 14:15:25

标签: c# asp.net json gridview

我必须创建一个自动填充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在浏览器中打开时不加载,但我假设这是因为数据源尚未正确链接或具有页面加载功能,因为我不知道该怎么做。

正如你所知,我对编码很陌生,如果我遗漏了任何东西,那就很抱歉。

任何帮助都会非常感激。

3 个答案:

答案 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文件的大小,此方法应该可以正常工作。