• User

    inserire pulsanti in un datagrid

    Ciao a tutti..ho un problema.
    Devo creare un datagrid il cui dataprovider è un recordset che passo a flash usando amf-php.
    Fin qua tutto ok..il problema però è che devo aggiungere al datagrid un ultima colonna che deve contenere un pulsante "scegli" per ogni riga del datagrid stesso,come posso fare?:bho:


  • Super User

    Ciao manu,
    non è possibile inserire un pulsante all'interno di un datagrid.

    La cosa che eventualmente puoi fare è creare una colonna in più al datagrid.
    Poi fai degli attachmovie sopra il datagrid dei tuoi pulsanti in modo che sembrano all'interno del datagrid.

    Comunque ogni item del datagrid è cliccabile e quindi potresti aggiungere delle azioni al click delle voci senza dover utilizzare dei pulsanti...


  • User

    Grazie mille per la tua risposta..ho fatto proprio come mi hai consigliato tu.Ora però ho un altro problema.Quando l'utente seleziona un record, deve uscire una finestra di conferma che chieda se è convinto della sua scelta.
    Io ho usato questo codice(la prima parte..che funziona..riguarda il riempimento del datagrid con un recordset passatogli da php con amf-php)..il problema è proprio l'alert..infatti non mi si apre e in più lo script mi impalla pure flash
    Riporto il codice qui di seguito(la parte in rosso è quella che mi da problemi)..

    import mx.controls.DataGrid;
    import mx.controls.gridclasses.DataGridColumn;
    import mx.remoting.;
    import mx.rpc.
    ;
    import mx.remoting.debug.NetDebug;
    import mx.utils.Delegate;
    import mx.controls.Alert;
    import mx.managers.DepthManager;
    var lista_ex:mx.controls.DataGrid;
    var gatewayUrl:String = "http://localhost/amfphp/gateway.php"

    NetDebug.initialize();
    var service:Service = new Service(gatewayUrl, null, 'RecordSet');

    btcarica.addEventListener("click", Delegate.create(this, carica));
    function carica()
    {
    var pc:PendingCall = service.listaEsercizi();
    //i risultati del service e gli errori vengono inviati alla funzione handleGetPersons
    pc.responder = new RelayResponder(this, "handleGetPersons", "");
    }
    function handleGetPersons(re:ResultEvent)
    {
    // mi pare di capire che significa che re.result fornisce i dati a lb.people
    lista_ex.dataProvider = RecordSet(re.result);
    var dgListener:Object = new Object();
    dgListener.cellPress = function(evt_obj:Object) {
    var i:Number = evt_obj.itemIndex;
    if (lista_ex.getItemAt(i).statoesercizio == "libero") {
    var myClickHandler:Function = function (evt:Object) {
    if (evt.detail == Alert.OK) {
    trace("ok");
    }
    }
    alert = createClassChildAtDepth(mx.controls.Alert.show("Sei sicuro di voler scegliere questo esercizio?", "Conferma", Alert.OK | Alert.CANCEL, this, myClickHandler, "",Alert.OK), DepthManager.kTop);

    }

    Grazie anticipatamente..:ciauz:


  • User

    ho risolto proprio ora..mi è stato sufficiente sostituire la riga
    alert = createClassChildAtDepth(mx.controls.Alert.show("Se i sicuro di voler scegliere questo esercizio?", "Conferma", Alert.OK | Alert.CANCEL, this, myClickHandler, "",Alert.OK), DepthManager.kTop);

    con la riga
    alert = createClassChildAtDepth(mx.controls.Alert.show("Sei sicuro di voler scegliere questo esercizio?", "Conferma", Alert.OK | Alert.CANCEL, null, myClickHandler, "testIcon", Alert.OK), DepthManager.kTop);

    grazie mille lo stesso..ciao