У меня есть модуль отчетности в приложении веб-форм ASP.NET (C #), который использует динамические элементы управления для параметров для каждого отчета.
Эти динамические элементы управления построены из столбца XML в БД SQL Server 2008.
Структура XML:
<Report Parameters>
<Parameter>
<Name>CustomerId</Name>
<Control />
</Parameter>
<Parameter>
<Name>Start Date</Name>
<Control>DDL</Control>
</Parameter>
</Report Parameters>
Я упустил много элементов для удобства чтения.
Если элемент <Control>
не пустой (как в случае параметра Начальная дата в примере XML), то преобразование XSLT на основе C # создает соответствующий элемент управления в моей форме.
Если элемент <Control>
пуст (как в случае с CustomerId), тогда я хочу использовать существующее свойство c # с тем же именем (т.е. у меня есть CustomerId, определенный в моем коде c #).
Эти значения параметров (CustomerId и Start Date) затем передаются в хранимую процедуру, используемую для генерации данных отчета.
Я использую XPathNavigator и связанные с ним классы в своем коде C # для извлеченияЭлемент <Name>
любого пустого элемента <Control>
.
Проблема в том, что элемент <Name>
находится в форме строки, и я действительно хочу, чтобы он был в форме кода C # (извините, не могу придумать лучшего способа описать это!) Т.е.хочу this.CustomerId (добавил this, чтобы показать, что это код, а не строка), а не "CustomerId".
Поскольку я не знаю, сколько отчетов будет иметь эта система с течением времени, я на самом деле не хочу создавать оператор enum или switch, если "CustomerId", затем this.CustomerId и т. Д., Как кажется, отрицаетточка динамического кода.
Я понимаю, что, вероятно, понадобится размышление, и я мало что знаю об этом, поэтому любые советы или советы по другому подходу к этой проблеме будут приветствоваться.
Спасибо,
Rich.