2015-12-25 3 views
0

Часть программы, которую я создаю, включает в себя раскрывающееся меню, в котором пользователь может выбрать тип нагрузки, прежде чем вводить позицию загрузки. Нагрузка и позиция будут отображаться в таблице данных и могут быть добавлены столько, сколько пользователь может добавить.Datagrid на основе ввода из текстового поля и combobox

Я не очень уверен, где я пошел не так, но это мой код:

function loadlist():void{ 
combobox1.addItem ({ label: "Choose a Load" }); 
combobox1.addItem ({ label: "Point Load" }); 
combobox1.addItem ({ label: "Bending Moment" }); 
combobox1.addItem ({ label: "Uniformly Distributed Load" }); 
combobox1.addItem ({ label: "Varying Distributed Load" }); 
combobox1.addItem ({ label: "Nonlinear Distributed Load" }); 
} 

function loadbuttonclick (event:MouseEvent):void{ 
combobox1.removeAll(); 
loadlist(); 
trace("load"); 

//datagrid 
var myTextFormat: TextFormat = new TextFormat(); 
myTextFormat.font = "Comic Sans MS"; 

var datagrid:DataGrid = new DataGrid; 
datagrid.columns = ["Type of Load", "Position of Load"]; 
datagrid.resizableColumns = true; 
datagrid.setRendererStyle("textFormat", myTextFormat); 
datagrid.addItem(Load type: "combobox1.selectedItem.label", Load position: "loadposition.text"); 


addChild(datagrid); 

datagrid.addEventListener(Event.CHANGE, gridItemClick); 

function gridItemClick (event:Event):void{ 
trace("The Selected Load is " + combobox1.selectedItem.label); 
} 
} 
} 

ответ

1

Вы должны получить сообщение об ошибке из этой строки, синтаксис кажется неправильным:

datagrid.addItem(Load type: "combobox1.selectedItem.label", Load position: "loadposition.text"); 
  • Это не объект, объект должен быть определен с фигурными скобками {}.
  • Ключи объекта не могут иметь пробелов, если они определены с помощью фигурных скобок.
  • Вы пытаетесь передать динамические значения в виде строк, вы должны написать combobox1.selectedItem.label вместо "combobox1.selectedItem.label".

Прошло некоторое время, когда я работал с datagrids, но если я правильно помню, элемент - это объект, ключи которого должны соответствовать столбцам.

Поскольку ваши колонки включают пробелы вы не могли бы написать:

datagrid.addItem({Load type: combobox1.selectedItem.label, Load position: loadposition.text}); 

Однако, это должно работать:

var object:Object = new Object(); 

object["Type of Load"] = combobox1.selectedItem.label; 
object["Position of Load"] = loadposition.text; 

datagrid.addItem(object); 

У меня не было времени, чтобы проверить это, но это должно быть правильное направление.

+0

Я пробовал это, но получил ошибку «TypeError: Error # 1009: Не удается получить доступ к свойству или методу ссылки на нулевой объект». Кроме того, заголовки столбцов в datagrid не отображаются – Sherlyn

+0

combobox1.selectedItem или loadposition (или оба) являются нулевыми, вам нужно отлаживать код. –

Смежные вопросы