Автогенерация столбцов из пустых результатов в Silverlight - PullRequest
1 голос
/ 11 октября 2010

Я делаю быстрое прототипирование, пытаюсь смоделировать интерфейс администратора для веб-сайта и пошел с WCF RIA Services. У меня есть возможность выставлять и использовать доменные сервисы от сервера к клиенту, но я борюсь с автоматическим созданием столбцов в сетке данных, когда результат запроса на сервере не содержит данных.

 <riaControls:DomainDataSource Name="domainDataSource1" 
        LoadSize="20" QueryName="GetUsers" AutoLoad="True" >
            <riaControls:DomainDataSource.DomainContext>
                <ds:CobraDomainContext />
            </riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>

<sdk:DataGrid ItemsSource="{Binding Data, ElementName=domainDataSource1}" AutoGenerateColumns="True" IsReadOnly="False" Width="250" Height="150" >
            </sdk:DataGrid>

При этом отображается пустой массив данных размером 250x150 (без столбцов / без строк). Я ожидал, что столбцы для пользовательского объекта были отображены, даже если с сервера не было возвращено никаких данных, так как в противном случае представление могло бы отчасти сосать. Мой мозг не может понять, что не так, поэтому я буду краудсорсировать с помощью stackoverflow.

ОБНОВЛЕНИЕ: я ожидал, что результат запроса будет типизированным перечислением, но похоже, что результат запроса в DomainDataService просто IEnumerable, но не типизирован, поэтому внутренняя логика должна просмотреть список чтобы выяснить, какие данные он содержит.

Итак, обновленный вопрос: могу ли я дать DataGrid подсказку о том, какой тип данных будет возвращен, или иным образом автоматически сгенерировать столбцы в сетке (через XAML или код) ??

1 Ответ

0 голосов
/ 11 октября 2010

Полагаю, ваше перечисление ItemsSource не напечатано, верно?Если это просто список объектов, сетка данных не найдет общедоступные свойства объекта.

Я не знаю, каков ваш класс сущностей, но попробуйте этот код, чтобы понять, о чем я говорю:

Где-то:

public class User {
    public string Name { get; set; }
    public int Age { get; set; }
}

Xaml:

 <my:DataGrid x:Name="datagrid"/>

Codebehind:

public MainPage() {
    InitializeComponent();
    datagrid.ItemsSource = new List<User>();
}

Список пуст, но сетка данных будет выбирать имена столбцов, так как я использую Список пользователей.Это может быть перечисление пользователей и т. Д.

Надеюсь, это поможет,

Cheers

РЕДАКТИРОВАНИЕ: об обновленном вопросе: вы можете попробовать использовать конвертер.

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