Bir dojo datagridlerin öğeleri kaldırarak

2 Cevap php

Benim Zend Framework projesinde basit bir dojo datagrid'e ile mücadele ediyorum.

Ancak ben Kullanıcıların seçilen satırları kaldırmak (ve db bunları kaldırmak) için mümkün olmak istiyorum, ben görüntüleyebilirsiniz bir mysql tablodan veri bir listesi var. I Dojo DataGrid adding and deleting data gelen örnek kullanıyorum. Datagrid benim görünümünde Benim kod gibi görünüyor.

<div dojoType="dojo.data.ItemFileReadStore" jsId="skillstore" url="<?php echo $this->baseUrl()?>/skills/hist/<?php echo $this->histid;?>"></div>

<table id="skillgrid" jsId="skills" dojoType="dojox.grid.DataGrid" store="skillstore"   style="height:300px;width:500px;">
 <thead>
	<tr>
		<th field="skillid" hidden="true"></th>
		<th width="auto" field="skill">Skills</th>
	</tr>

</thead>
</table>
<div>
<button dojoType="dijit.form.Button" onclick="removeRows()" >Remove Selected Row</button>
<button dojoType="dijit.form.Button" onclick="addRow()">Add another skill</button>
</div>

Ben görünümü komut captureStart ve captureEnd etiketleri inbetween satır kaldırmak için kodunu yerleştirdiğiniz. RemoveRows için kodu () bu gibi görünüyor.

function removeRows(e){ 	
	var items = skillsgrid.selection.getSelected();

	if(items.length){

		dojo.forEach(items, function(selectedItem){

			if(selectedItem !== null){

				skillstore.deleteItem(selectedItem);
			}//endif
		});//end foreach

	}//end if
}

Ben olsun asıl sorun bir satır seçin ve düğmesine tıkladığınızda, firebugs skillstore.deleteItem bir fonksiyonu olmadığını yakınıyor olmasıdır. Ben veritabanından girişi denemek ve kaldırmak için henüz.

Herhangi bir işaretçiler çok takdir.

2 Cevap

Ben yapmanız gereken tüm yerine id birinin kimliği gibi jsId nitelik değerini kullanmak olduğunu düşünüyorum:

var items = skills.selection.getSelected();

EDIT:

Bu işe yaramazsa, sen eklemek mi doğru kapanış body etiketi sonra aşağıdaki?

<script type="text/javascript" src="dojo.js" djConfig="parseOnLoad: true">
</script>
<script type="text/javascript">
    dojo.require("dojox.grid.DataGrid");
    dojo.require("dojo.data.ItemFileWriteStore");
    dojo.require("dijit.form.Button");
</script>

EDIT2:

Aslında, salt okunur bir mağaza kullanıyorsanız, bu bir sorundur.

Bunlar yapardı.

ilan dojo.require ("dojo.data.ItemFileWriteStore"); bir zorunluluktur. Firebugs DeleteItem 'ItemFileReadStore ama bulunan' hiçbir olduğundan 'ItemFileWriteStore skillstore.deleteItem bir fonksiyonu olmadığını yakınır yüzden.

function removeRows(e){         
        var items = skillsgrid.selection.getSelected();
        if(items.length){
                dojo.forEach(items, function(selectedItem){
                      skillsgrid.store.deleteItem(selectedItem); 
                      skillsgrid.sort(); // I did access the store of the grid directly.
                });//end foreach

        }//end if
}