Hello,
I downloaded the 13.1 Release and used the Version Utility to upgrade my project and made no other code changes.
I noticed 2 things after the upgrade to 13.1
1) By default when I load a grid I set the ActiveRow = Null as I don't want the first row to be highlighted. Now every grid in my application has the first row highlighted as if it is the Active Row. Here is a sample of the code I use.
this.ugGrid1BindingSource.DataSource = MyObject; this.ugGrid1.DataBind(); this.ugGrid1.ActiveRow = null;
2) I really like how the grids now support scrolling with the Pan Gesture. However I noticed on a Microsoft Surface tablet when I use the pen or my finger I am no longer able to simulate a mouse right click by either press and hold or when I press the button on the pen and tap the screen. Both of these actions used to simulate a mouse right click and would bring up a context menu on objects that had them. In the grid I am using a MouseDown event for the context menu. In MdiTabManager and Toolbars I am using the built in default functionality. I was looking at the documentation and it looks like I may need to capture the PressAndTapGesture and/or PressAndHoldGesture events? Please advise.
Thanks in advance.
Hello acozzi,
Thank you for contacting Infragistics.
For your first question, it would depend on when you're setting the ActiveRow to Null. If you set it in the Form.Load event handler, it won't work because the data has not been loaded into the grid at that point. I would suggest adding a Timer to the form and then setting the ActiveRow to null in the Timer.Tick event handler and then disabling the Timer.
For your second question I would recommend looking at the samples provided with NetAdvantage. If they were installed, you should see them in the Public Documents folder.
Thanks for the response.
I am setting ActiveRow = Null in methods that are called from Form.Load. This functionality worked fine in Infragistics 10.3 - 12.1. Only when I upgraded to Infragistics 13.1 has this functionality changed. What prompted the change? As parts of my application are now broken. Going thru my entire application and adding Timers doesn't sound like an elegant solution.
All of the Touch samples provided with NetAdvantage have to do with the TouchProvider. The only information I could find on the gesture events is in the link below. However there are no code samples.
http://ko.infragistics.com/help/topic/227A28B5-A878-42DB-BD8F-E8ADBC0ADC6C
Thank you for your response. I've attached the sample project I created in order to test this issue. I created the project using NetAdvantage 2012 Volume 1. When I run the project, setting ActiveRow to null in the Form.Load event handler has no effect. If it happens that you're doing something different than I did in my sample, then please modify my sample so it does what your project does.
Thanks for the code sample.
I can see in your sample that ActiveRow has no affect. I added a DataBind to the grid right before setting ActiveRow = null
ultraGrid1.DataBind();
Using Infragistics 12.1 the Active Row is not highlighted. I then ran the version utility and upgraded a copy of your project to 13.1 and the ActiveRow is now highlighted.
I've attached an update to your project which includes the DataBind. Please advise.
An initial test of setting SyncWithCurrencyManager to false is working. We are going to test additional grids in our application and will let you know if we find any issues. Thank you very much for helping us resolve this issue.
Hi,
I just wanted to let you know that we have looked unto this issue and it turns out that we cannot fix it. The current behavior is correct, even thought it's a breaking change.
This came about as the result of a bug fix. The original bug happened at design-time. Basically, when you set the grid's DataSource, the grid would perform a bunch of metrics calculations and as an incidental part of that process, the grid also ended up synching it's ActiveRow with the current position of the DotNet CurrencyManager. This was never intentional, and performing these metrics calculations at the time of binding, before the grid painted, cause the design-time experience to be unstable. Simply dirtying anything on the form would cause the grid's column widths to change slightly ever time. So the metrics calculations are now deferred until after the grid paints.
I know you said the BeginInvoke workaround was not ideal, so I have a couple of other suggestions.
1) Set SyncWithCurrencyManager to false. This is much simpler and easier than BeginInvoke and unless you are binding the grid and some other controls to the same data source and you need them to stay in synch, it won't make any difference in your app - in fact, it will be slightly more efficient.
2) Use the grid's Paint event:
bool flag = false; private void ultraGrid1_Paint(object sender, PaintEventArgs e) { if (false == this.flag) { this.flag = true; this.ultraGrid1.ActiveRow = null; } }
Thanks guys. Hopefully its a quick fix that can be put into a Service Release.
Hi acozzi,
I created CAS-114766-W9L3R5 to track this issue and I have submitted it to our engineers for them to research.
Off the top of my head, I'm not sure why this behavior changed. Most likely it was an unintentional change that was the result of some other bug fix.
I'm going to ask Infragistics Developer Support to create a case for you and write this up for developer review so we can investigate further, find out exactly what changed, and why, and see if there's anything we can do about it.