0
我想在我的dataGrid中創建按鈕。不過,我是一個begginer,我現在不怎麼做我的函數,它生成按鈕列需要參數,我需要使用每個按鈕。我需要每個按鈕都有一個特定的標籤,如果我點擊該按鈕,它會將googleURL複製到剪貼板。AS3 - 傳遞變量到類函數(按鈕到dataGrid)
我不知道如何傳遞變量「BUTTONLABEL」和「googleURL」到功能......
這裏是代碼的.fla部分:
googleURL = "www.someadress.com";
buttonLabel = "someLabel";
var btnCol:DataGridColumn = new DataGridColumn("buttonColumnTitle");
btnCol.cellRenderer = ButtonCell;
btnCol.editable = false;
tabulka.addColumn(btnCol);
,這裏是扣式類:
package
{
import flash.desktop.Clipboard;
import fl.controls.Button;
import fl.controls.listClasses.ICellRenderer;
import fl.controls.listClasses.ListData;
import flash.events.Event;
import flash.events.MouseEvent;
public class ButtonCell extends Button implements ICellRenderer
{
private var _listData:ListData;
private var _data:Object;
public var _buttonLabel:String;
public var _googleURL:String;
public function ButtonCell()
{
super();
//_buttonLabel = buttonLabel;
//_googleURL = googleURL;
this.label = _buttonLabel;
addEventListener(MouseEvent.CLICK, onButtonClick);
}
public function set data(d:Object):void
{
_data = d;
}
public function get data():Object
{
return _data;
}
public function get listData():ListData
{
return _listData;
}
public function set listData(value:ListData):void
{
_listData = value;
}
override public function get selected():Boolean
{
return _selected;
}
override public function set selected(value:Boolean):void
{
}
public function onButtonClick(event:MouseEvent)
{
System.setClipboard(_googleURL);
}
}
}
#######################################
如果這工作完美,那就是問題所在。非常感謝!!但是還有一件事我不確定... 當我想添加更多的按鈕時,它只顯示最後一個按鈕......我不確定有什麼問題。這是樣品sript其中提請5項,但按鈕 - 只有最後一個...
import ButtonCell;
import fl.controls.dataGridClasses.DataGridColumn;
import fl.controls.listClasses.CellRenderer;
import fl.controls.DataGrid;
import fl.data.DataProvider;
var googleURL:String = "www";
var buttonLabel:String = "bt";
var provide = new DataProvider;
var tabulka:DataGrid = new DataGrid();
tabulka.x = 50;
tabulka.y = 50;
addChild(tabulka);
tabulka.setSize(400, 300);
tabulka.columns = ["Parcela","Odkaz"];
tabulka.columns[0].width = 50;
tabulka.columns[1].width = 350;
tabulka.selectable = false;
tabulka.dataProvider = provide;
var btnCol:DataGridColumn = new DataGridColumn("Copy");
tabulka.addColumn(btnCol);
for (var i = 0; i<5; i++){
provide.addItem({Parcela:"Item "+i});
btnCol.cellRenderer = new ButtonCell(buttonLabel = "bt"+i, googleURL = "www" + i);
}
感謝答案,我alredy tryied這一個,但(我不知道這怎麼可能?)它給了我這個錯誤: 場景1,圖層'層1',幀1,線485 \t 1137:參數的數量不正確。預計不會超過1. – Hokyjack
是否有可能只有ButtonCell接受一個參數?如果是這樣,那就是你會得到的錯誤。 – Jnatalzia
我不確定:我在那裏寫了:'btnCol.cellRenderer = ButtonCell(googleURL,buttonLabel);'但我不知道爲什麼它給出這個錯誤。我不確定是否有必要將按鈕放在dataGrid中,也許有一些解決方案沒有使用class?我絕對失去了,我不知道如何運行我的應用,這是我需要完成的最後一步。我只需要將按鈕放在dataGrid中的項旁邊即可::/ – Hokyjack