jnm2 / devexpressmods Goto Github PK
View Code? Open in Web Editor NEWStopgap for DevExpress report functionality
License: MIT License
Stopgap for DevExpress report functionality
License: MIT License
Discovered defect while adding tests.
Nulls are added to the summary which treats them as zeros, affecting averages, even when IgnoreNullValues = true.
Incremental mode (working at the on-print-demand level) will be deprecated and replaced with OrderBy (working at the data source level, like Immediate mode).
Summary fields are basically window functions. You pick an aggregation function, an expression to aggregate, a filter, a partition (previously Running
, now will be PartitionBy
), and either absence or presence of order by (previously Mode = Incremental
):
With OrderBy = false
, the default, same as Immediate mode had been:
[Func](case when [Filter] then [Expression] end) over (partition by [PartitionBy band])
With OrderBy = true
, same as Incremental mode had been:
[Func](case when [Filter] then [Expression] end) over (partition by [PartitionBy band] order by [child report sort])
The issue with Incremental mode is that values are added to the summary on demand as the report is printed, which can have surprising side effects because this doesn't always correspond to seeing the value in a report row. By the same token, there is no way to get partial summaries without printing all the rows. Much better to calculate everything at the data source level.
I just came across this after finding your post on a support site. Could I just do a binding redirect to point to 16.1 or do we update the entire project?
Previously I assumed that blank data members wouldn't be a valid use case but when preparing the XAF XCRM demo guide I found that this is a necessity.
Only affects fields with OverrideFilter set.
originalBrowserAsChild.Parent
should be originalBrowser.Parent
because the interface property returns null when the parent is not IRelatedDataBrowser
.
Left over from #12
Saves typing when you have an IDesignForm
instance handy.
Still want to keep the Apply(XRDesignMdiController, XRDesignDockManager)
overload for custom design forms that may not implement IDesignForm
.
Currently if you use ?ParamName
in the SummaryField.OverrideFilter
, the summary field goes blank.
This is because the expression evaluator only supports the format [Parameters.ParamName]
. You can see that this format is what is inserted by the property editor for the Expression
property.
The OverrideFilter
semantics should be just the same as the report FilterString
semantics, so ?ParamName
should be made to work.
It would be nice if the Expression
editor followed the same semantics but that's up to DevExpress and it's best to be consistent with CalculatedField.Expression
. No calculated field, including summary fields, can use the ?ParamName
style.
It would also be nice to get a warning when an unknown name is used, but again it's best to be consistent with existing behavior. Neither calculated fields' Expression
or report bands' FilterString
warn about unknown names.
It would most likely be easier for a lot of folks to use binaries, and it would be good to have a clear indication of the fact that the current code is stable.
Alfter upgrading to 17.1 I'm havving issues with reports using DevExpressMods (XAF)
please see
https://www.screencast.com/t/EAqMBllRU60O
DevExpress's system requirements for WinForms goes back as far as .NET 4.0.
See https://documentation.devexpress.com/#WindowsForms/CustomDocument16705
This library should match, especially considering getting started with DevExpress samples targeting 4.0.
This only affects summary fields with FieldType set to a number type other than decimal.
Throws an internal InvalidCastException for each row being filtered where this is evaluated which causes each row to be excluded.
Leftover from #12
DevExpress has finally added the feature we've all been waiting for in 17.2! An expression binding is much more usable than the SummaryField– a single expression can do the job that it used to take multiple SummaryFields and a final CalculatedField to achieve.
Overview
Blog demonstration
Docs
What you need to know:
I will publish a v17.2-compatible release ASAP so that you can begin replacing your SummaryFields with expression bindings. (#22)
I will verify whether expression bindings satisfy every use of the SummaryField that I'm aware of. If not, I will log issues with DevExpress until expression bindings reach parity. Expression bindings look comprehensive but at the same time, there are a lot of combinations of settings on the SummaryField too. As soon as I'm satisfied that you can do everything natively in 17.2 that you can do with a SummaryField, I will deprecate this project and redirect people to expression bindings.
I recommend that you try to replace all usages of SummaryField with expression bindings and let me know what you run into now. You might be using it in a way my company isn't. I want to be sure that expression bindings can do everything before I deprecate.
End of an era! Much as I've enjoyed writing this hack, nothing is more delightful than native support. I'm a bit disappointed that I never shared SummaryField v2 with new abilities, such as datasource-level PartitionBy on any band, or working inside aggregated expressions. Sadly, I have little time to spare. But kudos to DevExpress for doing the right thing and providing a first-class experience! That was the goal I was hoping for when I went public with this project. Perhaps it made a difference. 🎉
Defect discovered while preparing the XAF XCRM demo guide.
Probably the only barrier to entry for people is the lack of sample code.
https://github.com/jnm2/DevExpressMods#getting-started has instructions but nothing beats seeing it in action.
DevExpress 15.2 introduces a breaking change to their public API surface. I have a tested fix ready.
The library has been well tested by running rather complex reports for two years, but I need to move all of that into unit tests. Once all that knowledge is contained in this repo, outside upgrades and fixes will be easier to maintain.
Could you create the Demo Application from the XAF XRM Demo?
If you have DevExpress Universal, it can be found at:
C:\Users\Public\Documents\DevExpress Demos 16.1\Components\eXpressApp Framework\XCRM\CSThen just follow the article to get access to the Mdi Controller: How to: Customize the WinForms Report Designer Form
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.