Good morning,
I have a Ultragrid which has a combo box in it. When I record, the value will work with the SetCellData if it is correct. Some of our values have trailing spaces and some do not. I need to get the combo box from the cell. Then I can process the items to see if the specified value is available. If available I can select the value.
Can you tell me how to get the combo box object so I can work with it?
Regards,
Brian
That depends highly on how, where and when the combobox's gets it's data as well as what the combobox actually is. By default, I would say you should be able to use GetNAProperty to get either the cell's or the columns ValueList property, and look at it's ValueListItems. But it is also quite possible that the combobox is a customized editor that doesn't follow that methodology or place of storage for it's data, or that it only populates the combobox on dropdown, and the valuelists are empty prior to that. For the later you can activate the cell, then PerformAction gridEnterEditModeAndDropdown, then try to get the value of the valuelists. If none of those work, I would suggest contacting your developer and learning more about this particular instance of combobox itself.
As to QTP getting ahold of the specific combobox, in most scenarios the combobox is an editor component and not really a control. In which case QTP has no knowledge of it, as it only interacts with objects that inherit form System.Windows.Forms.Control.
Hi Michael,
Could you possible provide and example of the code to get both the cell and column value list items?
Thank you,
Hi Brian,
I am not sure of how you mean with your distinction between short description and long description as those are not properties of a ValueListItem, and your developer may be getting them from any number of places. That being said the members of a ValueListItem can be found in our online help here.
I would try both DisplayText and DataValue as these are most likely.
So in code either :
sListValues = sListValues + objectTable.GetNAProperty(sValListItems & "["& cstr(x) & "].DataValue") & vbCRLF
or
sListValues = sListValues + objectTable.GetNAProperty(sValListItems & "["& cstr(x) & "].DisplayText") & vbCRLF
Hi Michael.
I tried to DataValue: sListDispValues = sListDispValues & objectTable.GetNAProperty(sValListItems & "["& cstr(x) & "].DataValue") & vbCRLF
but I get the following error:
Type 'Summit.Framework.View.DDItem' in Assembly 'Framework, Version=5.30.9245.1139, Culture=neutral, PublicKeyToken=1984b01ba11e2fd5' is not marked as serializable.
Line (19): "sListDispValues = sListDispValues & objectTable.GetNAProperty(sValListItems & "["& cstr(x) & "].DataValue") & vbCRLF".
The value returned by the original code: sListValues = sListValues & objectTable.GetNAProperty(sValListItems & "["& cstr(x) & "]") & vbCRLF
And the new for DisplayText: sListTextValues = sListTextValues & objectTable.GetNAProperty(sValListItems & "["& cstr(x) & "].DisplayText") & vbCRLF
Both return the value is the list here are some examples
Displayed Value after selection
Displayed Description in List
"" or Empty String value
None
SECID
Security ID
ABI
ABI(Italy)
I need to select by the Displayed Values for some columns and the Description for others. The text is coming from the database and is dynamic. Sometimes we get extra spaces which is why I need to get the value.
In other combo elements I get a singe value such as "";None, or SECID:SecurityID.
Let me know if this clears things up.
You will likely have to ask your developer about Type 'Summit.Framework.View.DDItem', as this is likely a value type specific to them. The exception "is not marked as serializable" basically means it's a custom data type, that was not made in a way to be passed out of the .NET framework cleanly. GetNAProperty can dig into it further as it is doing so while still in the .NET framework and return a serializable property value from it. Likely in your case you are looking for a string value. Your developer should know the property names of that object and which one is the one you should use.
If you are using TestAdvantage 10.3 or later, you can use the GetNAProperties method, which is used similarly to GetNAProperty, but instead of attempting to return the value of the property of the name you supplied, it instead returns all of that available property names and their datatype names, off of the property value of the name you supplied.
Hi Mike,
I spoke to the person I work with on this project. Laurie recalls that we could not use the 10.3 advantage on the application since the company used a earlier version of the toolkit to build the code. Can we install the 10.3 to get the information and then use this in the 2007 toolkit code in QTP.
Thank you for your help,
Here are the versions of the DLLs which are in the appliation directory.
Can we use the TestAdvantage 10.3 with this version of code?
Thank you for the ideas. We are going to hold off on getting this done for now.
Is there anything more we can help you with?
Michael S.
Unfortunately no, you need to use the version of TestAdvantage with an identical Major and Minor assembly version number, and CLR. So in your case you would need to use TestAdvantage 7.3 since you are using NetAdvantage 7.3.
GetNAProperties is only really an exploratory method to help learn more about the property names and their data types. It's useful for testers who may have limited access to their developers and want more information on the fly. If you do have access to your developer it should be easier to ask them what that datatype is and what properties it has.
If for some reason that is not a viable option for you, there are other methods. Albeit they will require a greater amount of understanding of code. You could use .NET Reflector, have it open your application, then find the data type that you are looking for.
According to your previous entry in the forums, you would need to expand the references of your application, right click on the reference to Framework, and select Go To Assembly. Find that assembly, which hopefully should be either in the directory of your application or it's bin directory. If you find that assembly, then you can search for it via F3 or View-> Search to search for "Summit.Framework.View.DDItem", double click it in the search window to highlight it in the main window. Finally right click it and select dissemble. It should open a Disassembler window.
Use the information that you garner from that to access the data via GetNAProperty. Note that GetNAProperty returns allows you to dig down through public properties. It will only return values of properties for simple datatypes such as string, int, double, datetime, etc.
As I stated this is a much more advanced method of trying to learn about a particular object, and is why we created GetNAProperties, but as this is not a window open to you, due to versioning restrictions, and if the developer is not available to you, it is at least an additional option.