ListView, BO, and passing a Dictionary to the BO's Fill()


Author
Message
Alex Luyando
Alex Luyando
StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)
Group: StrataFrame Users
Posts: 112, Visits: 1.2K
H-



Having an issue filling a listView based on a BO filled using a stored procedure. Will try to distill the scenario below, hopefully not omitting any key elements.



--- Intro --------------------------------

The BO has a fill method with the following signature.



public void FillAfterRefresh(Dictionary tdictParameters)



The dictionary passed in includes values used as parameters in the call to the stored procedure.



The form has a listVview on it, that I want to populate using the result set returned by the stored procedure. It is set to manually populate, and I've specified the appropriate BO class and the above fill method.



For testing/debugging purposes I've thrown a few controls on the form as well and bound them to BO fields.



--- Observations/Problems ---------------------------------

1.) If I drop an instance of the BO onto the form, and call the above Fill method, passing a reference to a dictionary in as the lone argument, the fill works great (confirmed via the debugger and by being able to view the results in the test controls on the form).



2.) When I attempt to set the List View Population Settings, I see my fill method, but the parameter shows as (Dictionary`2). Not sure what's up with this? (But, willing to run it anyway since it compiles.) Note: See attached PNG.



3.) If I try to call the listview's requery, passing in the dictionary (either in the requery call or in the ListPopulating event using e.Parameters[0].Value = this.oDictUserInfoWink I get an immediate error at runtime:



Dynamically populating the ListView failed. Could not create and fill the business object of type 'IndexReviewSystem.Business_Objects.Reporting_Objects.boIRSPredictiveCompositionNullProblems'



Inner Exception Message: "Dynamically populating the ListView failed. Type 'System.Collections.Generic.Dictionary`2[[System.String' could not be found."



Can someone help me make sense of this?



I feel I have a workaround as I can put a BO on the form, fill it, then copy the filled datatable to the listview's internal datatable. I feel, however, I shouldn't need to do that… I'd really like to understand what's going on.



TIA


________________
_____/ Regards,
____/ al
Attachments
tmp2-10-2010 12-03-40 PM.png (130 views, 14.00 KB)
Trent Taylor
Trent Taylor
StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
I will respond to this in more detail later, but the long and short of it is this is how .NET reflection returns this through MethodInfo. The reason is that it is a generic and this is how generics show up through reflection. I can give a long winded explanation later, but this is not likely to change as it would require a fundamental change to the reflection interpretation which would break other things.
Alex Luyando
Alex Luyando
StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)
Group: StrataFrame Users
Posts: 112, Visits: 1.2K
Hey Trent -



Thanks for the super-quick reply. No need for the chapter-and-verse. I am inferring from your response though that passing a dictionary in won't work, so Plan B ("now-needed" BO and a copy-from-bo-to-list-view approach wins out. Do I have that correct?




________________
_____/ Regards,
____/ al
Trent Taylor
Trent Taylor
StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)StrataFrame Developer (10K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 6.9K
Yeah, that would work. You could also turn it into a KeyPair array and pass that over as well since it would no longer be interpreted as a generic.
Charles R Hankey
Charles R Hankey
Advanced StrataFrame User (964 reputation)Advanced StrataFrame User (964 reputation)Advanced StrataFrame User (964 reputation)Advanced StrataFrame User (964 reputation)Advanced StrataFrame User (964 reputation)Advanced StrataFrame User (964 reputation)Advanced StrataFrame User (964 reputation)Advanced StrataFrame User (964 reputation)Advanced StrataFrame User (964 reputation)
Group: Forum Members
Posts: 524, Visits: 30K
Hey Alex -

Since you wouldn't accept my advice to check out Buffy as one of the greatest TV shows of all time Tongue you may pass on this too but ...

Regarding passing a lot of params to a sproc not sure if this will do you any good but might get you thinking about other ways to do it

http://forum.strataframe.net/Topic24706-26-1.aspx

I use if for stuff like passing a list of keys to do a subquery but the approach can be adapted for a lot of things.


Alex Luyando
Alex Luyando
StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)
Group: StrataFrame Users
Posts: 112, Visits: 1.2K
LOL Charles... I figured enough time has passed and you would have forgotten about that by now! Wink



Thanks for the link... I'll have a look and see where it leads me to.



________________

_____/ Regards,

____/ al


________________
_____/ Regards,
____/ al
Alex Luyando
Alex Luyando
StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)StrataFrame User (210 reputation)
Group: StrataFrame Users
Posts: 112, Visits: 1.2K
Wow... nice stuff, Charles! That can be VERY useful in many scenarios... Will have to bring that into play next time.



.... so maybe I need to check the TV Listings for Buffy after all..... Smile

________________
_____/ Regards,
____/ al
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Similar Topics

Reading This Topic

Login

Explore
Messages
Mentions
Search