ComboBoxes and ArcMaps for Developers
-
I am attempting a simple exercise, building off a template ESRI's ArcMaps for developers has given me. If anyone is familiar it is the Quick Report Template. That being said I have no experience in Qt QML, I am learning as I go. On this template provided you can report information at location provided by GPS. This information is grabbed from a text box and stored in an online database (ArcMaps Online).
I am attempting to replace the text box with a dropdown menu. So far I've used a combo box and ListModel, It looks like it should work. Dropdown work, and change what they say.
The complication is when I look into the database. Changing my selection with the dropdown does to appear to change the index. I am missing some way to tell the program that it needs to look for List elements.I can return a single entry from the dropdown into the database by using
currentIndex: 1
So it does access the ListElement, however when I use this every selection, will return this same index. If i do not set currentIndex, I will receive a null value.
My combo box is below.
ComboBox { id: textField //currentIndex: 1 model: ListModel { id: cbItems ListElement { text: "StrawBerry" } ListElement { text: "Banana" } ListElement { text: "Apple" } ListElement { text: "Coconut"; } } width: 300 anchors { bottom: page4_button1.top bottomMargin: 2 horizontalCenter: parent.horizontalCenter } onCurrentIndexChanged: console.debug(cbItems.get(currentIndex).text) Component.onCompleted: { //listView.onAttributeUpdate(objectName, text) if (fieldType != Enums.FieldTypeDate) attributesArray[fieldName] = textField.currentText } }
This piece is communicating back to ArcMaps Online
function onAttributeUpdate(f_name, f_value){ console.log("Got: ", f_name, f_value, typeof(f_value)); for(var i=0; i<theFeatureAttributesModel.count; i++) { var item = theFeatureAttributesModel.get(i); if(item["fieldName"] == f_name) { item["fieldValue"] = f_value;
Thanks in advance!
-
Did you already resolve this? If not, perhaps it would be simpler if you used a regular js array to add your items to the combo box, instead of using the ListModel?