Edhy Rijo
|
|
Group: StrataFrame Users
Posts: 2.4K,
Visits: 23K
|
Hi, I am working with a DataGridView in a child form, if I cancel the childform with the follwing code: DialogResult = Windows.Forms.DialogResult.Cancel Then I get the following exception:
KeyNotFoundException
The given key was not present in the dictionary.
Source : mscorlib
Stack Trace:
at System.ThrowHelper.ThrowKeyNotFoundException()
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at MicroFour.StrataFrame.Business.BusinessLayer.get__CurrentDataTable(Boolean IsSharedTable)
at MicroFour.StrataFrame.Business.BusinessBindingSource.RemoveBOHandlers()
at MicroFour.StrataFrame.Business.BusinessBindingSource.Dispose(Boolean disposing)
at System.ComponentModel.Component.Dispose()
at System.ComponentModel.Container.Dispose(Boolean disposing)
at System.ComponentModel.Container.Dispose()
at CardTrackingSystem.frmActivateCardsItems.Dispose(Boolean disposing) in E:\Visual Studio 2008 Projects\StrataFrame\Card Tracking System Projects\CardTrackingSystem.NET\CTS Solution\Card Tracking System\Dialogs\Transaction Forms\Activate Cards\frmActivateCardsItems.Designer.vb:line 10
at System.Windows.Forms.Form.Close()
at MicroFour.StrataFrame.UI.Windows.Forms.ChildFormDialog.ShowDialog(Object[] Arguments)
at MicroFour.StrataFrame.UI.Windows.Forms.ChildFormDialog.ShowDialog()
at CardTrackingSystem.frmActivateCards.cmdAddCards_Click(Object sender, EventArgs e) in E:\Visual Studio 2008 Projects\StrataFrame\Card Tracking System Projects\CardTrackingSystem.NET\CTS Solution\Card Tracking System\Dialogs\Transaction Forms\Activate Cards\frmActivateCards.vb:line 800
at System.EventHandler.Invoke(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativewindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativewindow.WndProc(Message& m)
at System.Windows.Forms.Nativewindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
The DataGridView is being populated with a BBS and the error only happens if the grid has some data. I don't know what "Key" it may be looking for? Also I would like to note that the BO assigned to the BBS has come Custom Field Properties which are not used in the DataGridView.
Edhy Rijo
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
For what it's worth, I just updated to 1.6.7. I was testing a window for an entirely different reason and received the same error mentioned above. I am getting the error on other windows that have the DevEx Grid, too. Has this been resolved? Is there an easy fix to it all?
I have several updates ready to be released, but I am on hold because of this issue.
Thanks,
Bill
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
Here are the exception details (if they help):
System.Collections.Generic.KeyNotFoundException was unhandled by user code
Message="The given key was not present in the dictionary."
Source="mscorlib"
StackTrace:
at System.ThrowHelper.ThrowKeyNotFoundException()
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at MicroFour.StrataFrame.Business.BusinessLayer.get__CurrentDataTable(Boolean IsSharedTable)
at MicroFour.StrataFrame.Business.BusinessBindingSource.RemoveBOHandlers()
at MicroFour.StrataFrame.Business.BusinessBindingSource.Dispose(Boolean disposing)
at System.ComponentModel.Component.Dispose()
at System.ComponentModel.Container.Dispose(Boolean disposing)
at System.ComponentModel.Container.Dispose()
at Aspire.Production.ProductionRequirements.Dispose(Boolean disposing) in C:\Aspire Projects\AspireSF\Production\ProductionRequirements.Designer.cs:line 18
at System.ComponentModel.Component.Dispose()
at System.Windows.Forms.Form.WmClose(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativewindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativewindow.WndProc(Message& m)
at System.Windows.Forms.Nativewindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
InnerException:
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
A bit more info...I blew away the BOs on a specific window that was generating this error. I replaced them with a DataSet generated by a stored procedure. The window works great. No error. So, the conclusion is that the BOs have something different about them that is causing this error to occur. I will try to rebuild all of the BOs in the BOM; however, I did this already. Maybe something didn't stick properly.
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
Since I have only one major active project at the moment, I decided to uninstall all DevExpress versions and reinstall the latest version, 9.1.5. The installation went without a hitch. I ran the conversion tool on my project and I edited the Inherited UI project. It built with no errors. I then went into my Subclass project and updated its references to the new DevEx version. It rebuilt without incident (after deleting the licenses.licx file). Then, I rebuilt my main project. I ran it...opened a window with a DevEx grid filled by a sproc (no BOs) and it closes without any problem. I open a window with a DevEx grid filled via a BBS and a BO and the data looks good; however, when I close it, I still get the same KeyNotFoundException.
So, reinstalling and upgrading the DevEx controls did not solve the problem. Next, I will uninstall the StrataFrame application and try reinstalling the most recent version, 1.6.7.
(fingers crossed)
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
1.6.7 was available. I hit the link to download, but I left the window open too long so my session timed out. I logged back on and 1.6.7 was gone. 1.7.0 has been released. Ok. Cool. I downloaded it and the source code. Installed both. Updated the Inherited UI with DevEx 9.1.5. Rebuilt all business objects. Ran the application and
WHAM!
Same error.
Message: The given key was not present in the dictionary.
Source: mscorlib
Inner Exception:
Stack Trace: at System.ThrowHelper.ThrowKeyNotFoundException()
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at MicroFour.StrataFrame.Business.BusinessLayer.SharedDataTableCollection.get_Item(String SharedTableKey)
at MicroFour.StrataFrame.Business.BusinessLayer.get__CurrentDataTable(Boolean IsSharedTable)
at MicroFour.StrataFrame.Business.BusinessLayer.get__CurrentDataTable()
at MicroFour.StrataFrame.Business.BusinessLayer.get_CurrentView()
at MicroFour.StrataFrame.Business.BusinessBindingSource.RemoveBOHandlers()
at MicroFour.StrataFrame.Business.BusinessBindingSource.Dispose(Boolean disposing)
at System.ComponentModel.Component.Dispose()
at System.ComponentModel.Container.Dispose(Boolean disposing)
at System.ComponentModel.Container.Dispose()
at Aspire.Production.InventoryAdjustments.Dispose(Boolean disposing) in C:\Aspire Projects\AspireSF\Production\InventoryAdjustments.Designer.cs:line 12
at System.ComponentModel.Component.Dispose()
at System.Windows.Forms.Form.WmClose(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativewindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativewindow.WndProc(Message& m)
at System.Windows.Forms.Nativewindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
I am now going on two days trying to fix this. Does anyone have any idea how to repair this problem? Other than getting rid of all Business Binding Sources?!?
Thanks!
Bill
P.S. I am actually getting a bit desperate. My manager is quite annoyed that I spent two full days trying to repair this issue. I have some serious updates to release, but I am stuck. Should I go back to 1.6.6?
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
I opened the source code in VS2008 and built the solution. No errors. I ran the application and I am still getting the same error. The dispose override looks like this: Protected Overrides Sub Dispose(ByVal disposing As Boolean)
'-- Dispose of the internal list of business objects when done and clear
' the references to the pieces
If disposing Then
If Me._BusinessObjectList IsNot Nothing Then
For Each bo As BusinessLayer In Me._BusinessObjectList.Values
bo.Dispose()
Next
Me._BusinessObjectList.Clear()
End If
'-- Remove the reference to the business object
If Me._BusinessObject IsNot Nothing Then
Me.RemoveBOHandlers()
Me._BusinessObject = Nothing
Me._BusinessObject_CurrentView = Nothing
End If
End If
'-- Base call
MyBase.Dispose(disposing)
End Sub Should I just add a try/catch block and handle the exception myself? I am running totally out of ideas on this.
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
I decided to edit one of the offending windows: Inventory Adjustments. When I opened the form in the designer I got this error: Object of type 'Aspire.Model.InventoryTransactionsBO' cannot be converted to type 'MicroFour.StrataFrame.Business.BusinessLayer'. All three BOs on the form kicked out the same error. So, I took a look at the BO. It's class is defined as follows: public partial class InventoryTransactionsBO : MicroFour.StrataFrame.Business.BusinessLayer All looks well there. I have done the rebuild all in the BOM (several times). I will do it again; however, I am suspecting it will do nothing to change things. Also, I will exit VS2008 and start again. Sometimes, that can be a help. I'll keep at it.
|
|
|
Trent Taylor
|
|
Group: StrataFrame Developers
Posts: 6.6K,
Visits: 7K
|
Bill, Sorry for the delay here, we have been fighting some internal ISP issues and trying to get the 1.7 build out the door, so a few things fell between the cracks...so BIG apology on this!  OK, is it possible to create a small sample that you can send me so I can see what you are fighting here? It is possible that the DevEx grid is doing something odd (would not be the first time) but I would like to see if it can be reproduced using a standard DataGridView as I would imagine that the issue you are fighting is not related to the DevEx grid but rather instantiation or something along those lines. A sample, if possible, would drastically move time to the left on this. Thanks!
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
Hi Trent,
I figured you were busy wrapping up the release. A LOT of nice stuff in there. Thanks a bunch for the new features and functionality!!
As far as a sample...I will try. I experience the error only when a BBS is employed to fill a DevEx XtraGrid object. I do not get the error in any other way. I have not tried a standard grid. If I get the opportunity to produce a sample, I'll include both. I am just now setting up the Inventory Adjustments window to issue a breakpoint during the close event. Hopefully, I can see something going on there. Fortunately, I was able to get the designer working again on that window.
I'll keep working on it and updating you on the steps I am taking.
Thanks for checking in!
Bill
|
|
|
Trent Taylor
|
|
Group: StrataFrame Developers
Posts: 6.6K,
Visits: 7K
|
Before you spend too much more time, just drag a DataGridView onto your dialog and see if you experience the same problems. Grids are always a pain and since they are so "fat" they can introduce tings at times do to forces outside of SF. As such, I always get back to basics when I see strangeness like this. Let me know...and again, I really am sorry for the long delay...I just lost this thread to the abyss....but now it is found
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
I dropped a DataGridView onto the form and disconnected the DevEx grid from the main BBS (I left the two repository BBSs connected). I connected the main BBS to the DataGridView. When closing the form, I got the same error. So, I deleted all of the BBSs. Ran the form, closed it and received no error. Then, I added a new BBS to the form and wired it to the DataGridView. I ran the app, opened the form, saw the data in the grid, then closed the form. No error! I then wired only the main BBS to the DevEx Grid. When closing the window, it generated the same error. So, the combination of the DevEx grid (9.1.5) and the BBS (versions 1.6.6, 1.6.7 and 1.7.0) makes the window fail on closing. The dispose method...inserting my guesswork here...seems to be trying to get rid of objects that may have already been dumped via the DevEx grid disposal process.
Thoughts?
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
I attempted to recreate the error for you in a sample application. The app that I created was a VB app. I am not getting the same error (although, I forgot to fill the BO). Of course, we are not dealing with apples and apples, so I am going to create a C# app, instead. Stand by.
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
The C# app sample is complete. There are no errors in that sample app....so, I am totally vexed and befuddled. What do I do, now?
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
References...how do I cleanup the references? I attached a window shot of the Add References for a project. Two of the references I need in the project are version 1.7.0 but the other two are 1.6.0. Ugh! I assume that is not correct.
I have uninstalled and reinstalled so many times. What is my best path for fixing this issue?
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
Attached are two assemblies and their version tabs. Is the business.dll supposed to have an assembly version of 1.6?
|
|
|
Trent Taylor
|
|
Group: StrataFrame Developers
Posts: 6.6K,
Visits: 7K
|
When you installed SF 1.7.0, it did not clear out all of the 1.6.0 assemblies (which can be caused by several things). Before you get much deeper, manually remove any 1.6.0 references then reload the 1.7.0 build. Make sure that all of your files get updated to the 1.7.0 version otherwise you will have other weirdness. Second, download the SF source code, build it in debug mode, which should also update your GAC references. THEN, get out of VS. Open VS back up and you should have SF DLLs in debug mode which will allow you to debug and break on any exception allowing you to trace and see where the point of failure is, look at a stack trace, etc. I really think that you are dealing with an issue within your code. For example, something is causing the grid to re-evaluate the bound data source which is causing the error. First, before you go crazy, just override the OnFormClosing method of the form, and manually remove the data source form the grid: MyGrid.DataSource = null; If you are using VB.NET then replace the null with Nothing. That should prevent anything from trying to evaluate the BBS on the form close.
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
So I go to uninstall SF and start over (again) and I get this...see attachment.
|
|
|
Trent Taylor
|
|
Group: StrataFrame Developers
Posts: 6.6K,
Visits: 7K
|
Where are you getting this? Most likely you are just not getting all of the assemblies updated into the GAC and within the ProgramFiles\Common Files\MicroFour\StrataFrame folders. Make sure you have permissions to update and that nothing is in use when you load the assemblies.
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
Where are you getting this? It popped up when I began the uninstall of StrataFrame. Naturally, the uninstaller closed. I have been able to get it going again. Sorry. I may be a little jumpy at the moment. I will be cleaning all assemblies referencing StrataFrame, then reinstalling. This will take a little while longer.
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
Trent L. Taylor (07/29/2009)
When you installed SF 1.7.0, it did not clear out all of the 1.6.0 assemblies (which can be caused by several things). Before you get much deeper, manually remove any 1.6.0 references then reload the 1.7.0 build. Make sure that all of your files get updated to the 1.7.0 version otherwise you will have other weirdness. Second, download the SF source code, build it in debug mode, which should also update your GAC references. THEN, get out of VS. Open VS back up and you should have SF DLLs in debug mode which will allow you to debug and break on any exception allowing you to trace and see where the point of failure is, look at a stack trace, etc. I really think that you are dealing with an issue within your code. For example, something is causing the grid to re-evaluate the bound data source which is causing the error. First, before you go crazy, just override the OnFormClosing method of the form, and manually remove the data source form the grid: MyGrid.DataSource = null; If you are using VB.NET then replace the null with Nothing. That should prevent anything from trying to evaluate the BBS on the form close. I reinstalled. I rebuilt the inherited UI project with the DevEx version I am using (9.1.5 . . . 9.2 is due out soon). I added the proper SF references to the project from which I removed them. I built and ran the app. When I closed the same window, I still get the error. So, I tried the code you suggested on the OnFormClosing event. The error still occurs. So, I setup the source code for debugging. When I run the app, the error still occurs. I have attached a screen shot of the debugging. The stack trace is the same as I have already posted. Any more ideas?
|
|
|
Bill Cunnien
|
|
Group: Forum Members
Posts: 785,
Visits: 3.6K
|
Btw, if you are interested, the SharedTableKey being passed to Me._Tables is "c67e1094-d653-4038-a662-45fbf647b5ca".
Me._Tables count is 3; however, only two keys are present...one for the InventoryTransactions table and one for the ItemClasses table. The missing one, which is on the form represented by a BO/BBS combo, is the UnitMaster table. Neither of those existing keys match the one being passed. I assume it is for the missing UnitMaster table.
Interesting.
|
|
|