2017-11-11 1 views
0

JSON으로 자동으로 채워지는 gridview를 만들어야합니다.C에서 JSON 데이터 소스를 사용하여 ASP.net gridview를 채우는 데 도움이 필요합니다.

JSON 폴더를 만들었습니다. 완전히 작동합니다. 데이터를 아무 문제없이 저장할 수 있습니다.

문제는 현재 내 ASP.net에서 내 JSON 파일을 사용하여 자동으로 양식을 채우는 내 gridview를 만들고 있습니다.

Visual Studio inbuilt LINQ 마법사를 사용해 보았습니다 ... 필드 자체가 아니라 gridview의 헤더가 채워졌습니다.

두 개의 열이있는 매우 간단한 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의

짧은 샘플 (만 기압 하나 개의 항목, 단지 특성을 보여주는이) (두 총 :. ID 및 제목)

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

브라우저에서 열면 gridview가로드되지 않지만 데이터 소스가 제대로 연결되지 않았거나 페이지로드 기능이 있기 때문에 무엇을해야할지 모르겠다 고 가정합니다.

나는 코딩을 아주 신기하다는 것을 알 수 있으므로, 아무 것도 남겨 두지 않으면 미안합니다.

어떤 도움을 주시면 감사하겠습니다.

+0

당신이 – derloopkat

+0

당신이 무엇을 의미합니까 죄송 서버 측에서의 GridView를 채우기 위해 노력 것을 우리에게 보여 주 시겠어요? – Joe

+0

난 시각적 인 스튜디오 inbuilt 데이터 소스 구성 마법사 LINQ 옵션을 사용하려고 다음 JSON 폴더를 선택하고, 정확한 헤더가 있었지만, 필드 didnt 채 웁니다했다. – Joe

답변

0

json 데이터를 데이터 소스로 직접 할당하는 대신, 데이터 유형과 같은 테이블을 원할 경우 새로운 목록 또는 데이터 테이블을 작성할 수 있습니다. 이 새 목록이나 데이터 테이블에 json 데이터를 채우고 GridView의 데이터 소스로 할당 할 수 있습니다.

json 파일의 크기에 따라이 방법이 잘 작동해야합니다.

+0

죄송하지만 특별히 JSON을 사용해야합니다. – Joe

+1

그 경우 json 데이터를 구문 분석하고 aspx 파일에서 수행하는 대신 서버 측 코드 (.aspx.cs 파일)를 사용하여 GridView에 할당 할 수 있다고 생각합니다. 나는이 일을 혼자하지 않았지만 나는 그걸봤을 뿐이었고 많은 예를 발견했다. –

1

당신은 일반적으로 텍스트 파일처럼, 필드 이름과 데이터 타입, 문자열, 정수 등

그런 다음 페이지로드 이벤트 tead RHE JSON 파일처럼 JSON 구조를 표현하는 클래스를 만듭니다.

읽은 json 문자열을 이전에 만든 클래스 목록에 직렬화하고 데이터 소스로 gridview에 할당하십시오.

그냥를 달성하는 방법에 대한 코드 예제를 추가하고 싶어, 당신이

1

나는이 페이지에 다른 답변에 동의하지 않아도 LINQ 데이터 소스를 제거합니다. 코드에서 설정하기 때문에 aspx 컨트롤에서 DataSource를 제거합니다.

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

주 뒤에

웹 양식

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

코드 : 당신이 File.ReadAllText(path);처럼 뭔가 대신 텍스트 파일에서 JSON을 읽거나하는 경우 스트림을 사용할 것입니다 귀하의 경우에는 당신은 큰 파일을 가지고 일한다.

데이터 소스 클래스

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

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

Joe, 답으로 표시하십시오. 나는 전화로 응답했고 코드를 게시 할 수 없었다! ;) – Giox

관련 문제