Как связать List <List <String>> с сеткой? - PullRequest
0 голосов
/ 21 апреля 2010

Я использую новый Telerik Rad Control, и я хотел бы использовать включенный GridView. Но моя проблема в том, что я восстанавливаю с веб-сервисом объект List<List<String>>, и я хотел бы показать его в своем Datagridview.

Я пытаюсь создать Grid.ItemSource = e.result, но ничего не появляется; - (

В чем проблема?

Большое спасибо.

Narglix

Ответы [ 3 ]

1 голос
/ 21 апреля 2010

Немного неясно, как вы хотите отображать данные, означает ли "каждая строка будет список", что вы хотите, чтобы она отображалась иерархически, как описано здесь 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 # открытый частичный класс 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; }
}  
0 голосов
/ 17 февраля 2017

вы должны поместить theGrid.ItemsSource в цикл

0 голосов
/ 21 апреля 2010

Вы можете проверить мой ответ (и приложенное приложение) здесь: http://www.telerik.com/community/forums/silverlight/gridview/how-to-bind-an-list-lt-list-lt-string-gt-gt-to-the-gridview.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...