카테고리 없음
[asp.net] 행이 확장되면 RadGrid가 데이터 소스를 채웁니까?
행복을전해요
2021. 2. 5. 09:22
RadGrid에는 이미 DetailTables가 있으므로해야 할 일은 다음과 같습니다.
HierarchyDefaultExpanded="false"
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