如何绑定List <list <string>&gt;到gridview?</list <string>

时间:2010-04-21 11:07:51

标签: silverlight gridview binding telerik

我正在使用新的Telerik Rad Control,我会使用GridView。 但我的问题是我使用一个List<List<String>>对象的web服务恢复,我想将它显示在我的Datagridview中。

我尝试制作一个Grid.ItemSource = e.result但没有出现; - (

有什么问题?

非常感谢。

Narglix

3 个答案:

答案 0 :(得分:1)

有点不清楚你想要如何显示数据,“每行将是一个列表”是否意味着你希望它以类似于http://www.telerik.com/help/silverlight/gridview-basic-hierarchies.html所描述的分层方式显示?

在任何情况下,您都需要采用Telerik论坛中建议的方法并创建数据表并绑定到该数据表,或者您为列表中返回的项创建类,然后创建这些类的列表。然后绑定到这些列表。

假设您想要分层显示它: 例如,如果您的List<List<String>>是团队列表,而内部列表是团队成员。要生成结果,每个团队在主网格中排成一行,您可以“深入”到团队中,使用下面的示例。

XAML         

    <telerikGrid:RadGridView x:Name="theGrid" AutoGenerateColumns="False">
        <telerikGrid:RadGridView.Columns>
            <telerikGrid:GridViewDataColumn DataMemberBinding="{Binding TeamName}" Header="Team" UniqueName="Team" />
        </telerikGrid:RadGridView.Columns>
        <telerikGrid:RadGridView.ChildTableDefinitions>
            <telerikGrid:GridViewTableDefinition>                
                <telerikGrid:GridViewTableDefinition.Relation>
                    <telerikData:PropertyRelation ParentPropertyName="TeamMembers" />
                </telerikGrid:GridViewTableDefinition.Relation>
            </telerikGrid:GridViewTableDefinition>
        </telerikGrid:RadGridView.ChildTableDefinitions>
    </telerikGrid:RadGridView>
</Grid>

C# public partial class MainPage:UserControl     {

    public List<Team> TeamList { get; set; }

    public MainPage() {
        InitializeComponent();

        //Property to bind to
        TeamList = new List<Team>();

        //Fake data returned from webservice
        List<List<string>> eresults = new List<List<string>>();
        List<string> innerList1 = new List<string> { "John", "Sarah", "Brad" };
        List<string> innerList2 = new List<string> { "Dave", "Lucy", "Eva" };
        eresults.Add(innerList1);
        eresults.Add(innerList2);


        int counter = 0;
        foreach (List<string> innerList in eresults) {
            Team theTeam = new Team();
            theTeam.TeamName = string.Format("Team {0}", counter);

            foreach (string s in innerList) {
                TeamMember theMember = new TeamMember();
                theMember.MemberName = s;
                theTeam.TeamMembers.Add(theMember);
            }
            TeamList.Add(theTeam);
            counter++;
        }
        theGrid.ItemsSource = TeamList;
    }
}



public class Team
{
    public List<TeamMember> TeamMembers { get; set; }
    public String TeamName { get; set; }

    public Team() {
        TeamMembers = new List<TeamMember>();
    }
}

public class TeamMember
{
    public String MemberName { get; set; }
}  

答案 1 :(得分:0)

答案 2 :(得分:0)

你必须把theGrid.ItemsSource放在循环中