2010-03-02 3 views
2

У меня есть пользовательский бизнес-объект, который перегружает функцию .ToString(). Он также реализует IFormattable.ToString, поэтому я могу определить свои собственные пользовательские форматы.Пользовательские .ToString() Форматы в отчетах .rdlc

Этот подход работает повсюду в моем приложении, за исключением отчетов .rdlc. Например, у меня есть текстовое поле на отчет со следующим выражением:

=Fields!MyField.Value.ToString("lr") 

«Л.Р.» является пользовательским форматом я создал. При запуске отчета я всегда получаю #Error как вывод. Я установил точки останова в своей функции .ToString и прошел через код при запуске отчета, и я знаю, что функция возвращает правильное значение, но отчет, похоже, не способен его получать и отображать.

+0

Вы пробовали 'Поля (« MyField »). Value.ToString (« lr »)'? Получает ли он тот же результат (он должен)? –

+0

Не повезло, к сожалению. На самом деле, чем больше я смотрю на это, тем больше кажется, что передать параметр функции в текстовое поле rdlc невозможно. Вызов .ToString(), похоже, работает, но вызов .ToString («lr») создает #Error. Может ли кто-нибудь подтвердить, если это так? – matt

ответ

1

можно сделать по-другому в отчете rdlc, вы можете использовать код VB. Просто нажмите отчет правой кнопкой мыши. Когда контекстное меню, из которого вы вводите параметры, переходите в Proprties. Когда вы нажимаете на нее, вы увидите вкладку управления несколькими страницами вкладки. Перейти к закладке «Код» там право вы VB работать оно должно быть что-то вроде этого

Public Function ParseVal(ByVal val As Object) As String 
    Dim MyClass As obj = CType(val, MyClass) 
    return obj.ToString("lr") 
    End Function 

Затем вызовите функцию в текстовом поле, как этот

= Code.ParseVal(Fields!MyField.Value) 

P.S. Я не очень уверен, что код VB работает правильно, просто протестируйте его, и если это необходимо переписать. Если какая-либо другая ошибка возникает, отправьте ее, чтобы узнать, в чем проблема.