дочерние объекты в rdlc (Studio 2010RC)

Я пытаюсь сослаться на подобъект в выражении поля в отчете Studio 2010. Раньше это работало в предыдущих версиях. Когда учетная запись ссылается на другой объект со свойствами, работало следующее.

=Fields!Account.Value.Name

(Имя - свойство дочернего объекта, Учетная запись - родительский объект)

Тот же синтаксис выражения больше не работает. Как указать свойства подобъекта в службах отчетов в rdlc в Studio 2010.

Спасибо


person Jim    schedule 31.03.2010    source источник
comment
Я сталкиваюсь с тем же. Не понимаю, зачем убрали эту функциональность, очень раздражает!   -  person AKoran    schedule 01.10.2010
comment
По-видимому, будет исправлено в VS 2010 SP1, если ваши классы являются общедоступными и сериализуемыми.   -  person Nicholas    schedule 02.02.2011


Ответы (3)


К сожалению, вы не можете (пока), и обходной путь заключается в создании свойств в родительском объекте.

Больше информации:

person mhapps    schedule 04.01.2011

Я могу подтвердить, что эта ошибка была исправлена ​​в VS2010 SP1 ... но вы должны отметить все соответствующие классы как Serializable.

На этом сайте вы можете найти образец проекта, который показывает рабочую версию: http://wraithnath.blogspot.com/2011/04/reportviewer-object-datasource-nested.html

Автор также упоминает, что вашим классам потребуется конструктор без параметров, но я заставил его работать с классами без конструктора по умолчанию. Тем не менее, если вы отметили все как сериализуемые и по-прежнему видите сообщение «#Error», попробуйте использовать конструкторы без параметров.

person alanning    schedule 16.10.2011

Вероятно, это неправильный ответ, но когда я чувствую, что не хватает материала по этому вопросу, побудите меня опубликовать свои выводы.

Скажем, если у меня есть вложенный список дочерних объектов в родительском объекте. Это очень распространенная ситуация, например, если у вас есть объект заказа (родитель), у вас, вероятно, будет список элементов заказа (дочерние элементы), как вы отобразите всю информацию с помощью rdlc? Есть два способа: 1 использовать подотчет и 2 использовать группировку. Я понимаю, что они оба могут достичь одного и того же - отображения списка деталей в отчете.

public class Order{
    public int OrderID {get; set;}
    public string Descrpition {get; set;}
    public List<OrderItem> OrderItems {get; set;}
}
public class OrderItem{
    public int OrderItemID {get; set;}
    public decimal Price{get; set;}
}

Самый простой способ - использовать группировку. При группировке вы должны создать новый тип данных, который будет содержать свойства родительского и дочернего элементов. Я считаю, что этот способ работает и с многоуровневым вложенным списком объектов. Это может показаться глупым, но в большинстве случаев вам все равно придется создавать новый тип данных, потому что типы, которые вам нужно отображать в отчете, отличаются от бизнес-объектов:

public class OrderReport{
    public int OrderID {get; set;}
    public string Description {get; set;}
    public int OrderItemID {get; set;}
    public decimal Price {get; set;}
}

Затем на rdlc вам просто нужно создать родительскую группу строк и дочернюю группу строк. Родительская группа должна быть сгруппирована по OrderID, дочерняя группа строк должна быть установлена ​​на «показывать детали». Я думаю, что вы можете сделать это несколько раз, чтобы получить многоуровневый вложенный список объектов.

person Community    schedule 29.01.2013