카테고리 없음

[asp.net] 행이 확장되면 RadGrid가 데이터 소스를 채웁니까?

행복을전해요 2021. 2. 5. 09:22

RadGrid에는 이미 DetailTables가 있으므로해야 할 일은 다음과 같습니다.

  1. HierarchyDefaultExpanded="false"
  2. HierarchyLoadMode="ServerOnDemand"

그리드-프로그래밍 방식 계층 바인딩

여기에 이미지 설명 입력

<telerik:RadGrid runat="server" ID="RadGrid1"
    AutoGenerateColumns="false"
        OnNeedDataSource="RadGrid1_NeedDataSource"
            OnDetailTableDataBind="RadGrid1_DetailTableDataBind">
                <MasterTableView
                        DataKeyNames="CountryId"
                                HierarchyDefaultExpanded="false"
                                        HierarchyLoadMode="ServerOnDemand">
                                                <Columns>
                                                            <telerik:GridBoundColumn
                                                                            DataField="Name"
                                                                                            UniqueName="Name"
                                                                                                            HeaderText="Country">
                                                                                                                        </telerik:GridBoundColumn>
                                                                                                                                </Columns>
                                                                                                                                        <DetailTables>
                                                                                                                                                    <telerik:GridTableView 
                                                                                                                                                                    DataKeyNames="StateId" 
                                                                                                                                                                                    Name="States" 
                                                                                                                                                                                                    AutoGenerateColumns="False">
                                                                                                                                                                                                                    <Columns>
                                                                                                                                                                                                                                        <telerik:GridBoundColumn
                                                                                                                                                                                                                                                                DataField="Name"
                                                                                                                                                                                                                                                                                        UniqueName="Name"
                                                                                                                                                                                                                                                                                                                HeaderText="State">
                                                                                                                                                                                                                                                                                                                                    </telerik:GridBoundColumn>
                                                                                                                                                                                                                                                                                                                                                    </Columns>
                                                                                                                                                                                                                                                                                                                                                                </telerik:GridTableView>
                                                                                                                                                                                                                                                                                                                                                                        </DetailTables>
                                                                                                                                                                                                                                                                                                                                                                            </MasterTableView>
                                                                                                                                                                                                                                                                                                                                                                            </telerik:RadGrid>
                                                                                                                                                                                                                                                                                                                                                                            

코드 비하인드

protected void RadGrid1_NeedDataSource(object source, 
   GridNeedDataSourceEventArgs e)
   {
       RadGrid1.DataSource = Countries;
       }
       
       protected void RadGrid1_DetailTableDataBind(object source, 
          GridDetailTableDataBindEventArgs e)
          {
              GridDataItem item = e.DetailTableView.ParentItem;
              
                  int countryId = Convert.ToInt32(item.GetDataKeyValue("CountryId"));
                  
                      e.DetailTableView.DataSource = Countries
                              .First(c => c.CountryId == countryId)
                                      .States;
                                      }
                                      
                                      public class Country
                                      {
                                          public int CountryId { get; set; }
                                              public string Name { get; set; }
                                              
                                                  public ICollection<State> States { get; set; }
                                                  
                                                      public Country()
                                                          {
                                                                  States = new List<State>();
                                                                      }
                                                                      }
                                                                      
                                                                      public class State
                                                                      {
                                                                          public int StateId { get; set; }
                                                                              public string Name { get; set; }
                                                                              }
                                                                              
                                                                              private List<Country> Countries
                                                                              {
                                                                                  get
                                                                                      {
                                                                                              return new List<Country>
                                                                                                      {
                                                                                                                  new Country
                                                                                                                              {
                                                                                                                                              CountryId = 1,
                                                                                                                                                              Name = "United States",
                                                                                                                                                                              States = new List<State>
                                                                                                                                                                                              {
                                                                                                                                                                                                                  new State {StateId = 1, Name = "Alabama"},
                                                                                                                                                                                                                                      new State {StateId = 2, Name = "Alaska"},
                                                                                                                                                                                                                                                          new State {StateId = 3, Name = "Arkansas"},
                                                                                                                                                                                                                                                                          },
                                                                                                                                                                                                                                                                                      },
                                                                                                                                                                                                                                                                                                  new Country
                                                                                                                                                                                                                                                                                                              {
                                                                                                                                                                                                                                                                                                                              CountryId = 1,
                                                                                                                                                                                                                                                                                                                                              Name = "Canada",
                                                                                                                                                                                                                                                                                                                                                              States = new List<State>
                                                                                                                                                                                                                                                                                                                                                                              {
                                                                                                                                                                                                                                                                                                                                                                                                  new State {StateId = 4, Name = "Alberta"},
                                                                                                                                                                                                                                                                                                                                                                                                                      new State {StateId = 5, Name = "British Columbia"},
                                                                                                                                                                                                                                                                                                                                                                                                                                          new State {StateId = 6, Name = "Manitoba"},
                                                                                                                                                                                                                                                                                                                                                                                                                                                          },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      },
                                                                                                                                                                                                                                                                                                                                                                                                                                                                              };
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  


출처
https://stackoverflow.com/questions/22050121