7/24/2011 10:11:38 PM
Title:
How to delete multiple rows from datagrid?
Please check the code
userinfo.mxml
[code]
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="init();">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
<!--Validation Start-->
<mx:StringValidator source="{userNameInput}" property="text"
requiredFieldError="This field is required"/>
<mx:StringValidator source="{locationInput}" property="text"
requiredFieldError="This field is required"/>
<mx:Validator source="{genderfield}" property="selectedValue"
triggerEvent="change"
requiredFieldError="One Option must be selected"
listener="{wrapper}"/>
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.utils.ObjectUtil;
private var log_str:String = "";
private var _objValidation:ValidationField;
[Bindable]public var dgItems:ArrayCollection = new ArrayCollection();
public function init():void{
//log_str += "init() function started..." + "\n";
_objValidation = new ValidationField();
//log_str += "_objValidation -- object created" + "\n"
_objValidation.UserName = userNameInput.text;
_objValidation.Location = locationInput.text;
/* log_str += "_objValidation's properties set" + "\n"
log_str += "init() function end" + "\n" */
}
public function resetForm():void{
userNameInput.text = "";
locationInput.text = "";
genderfield.selection = null;
}
public function addItem():void{
//Alert.show(userNameInput.text + ", " + locationInput.text + ", " + genderfield.selection);
if(userNameInput.text != "" && locationInput.text != "" && genderfield.selection != null){
dgItems.addItem({name:userNameInput.text,location:locationInput.text,gender:genderfield.selectedValue});
//Alert.show(""+temp);
resetForm();
}
}
public function deleteRow():void{
//Alert.show("In DeleteRows"+ObjectUtil.toString(datagrid.selectedItem));
while(datagrid.selectedItem != null){
dgItems.removeItemAt(datagrid.selectedIndex);
}
/* var sIndices:Array = datagrid.selectedIndices;
Alert.show(""+ObjectUtil.toString(sIndices)); */
//Alert.show(""+ObjectUtil.toString(datagrid.selectedItems));
}
public function dgChangeHandler():void{
resetForm();
userNameInput.text = datagrid.selectedItem.name;
locationInput.text = datagrid.selectedItem.location;
genderfield.selectedValue = datagrid.selectedItem.gender;
}
protected function log_btn_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
Alert.show(log_str);
}
public function editRow():void{
if(datagrid.selectedItem != null){
dgItems.setItemAt({name:userNameInput.text,location:locationInput.text,gender:genderfield.selectedValue},datagrid.selectedIndex);
resetForm();
}
}
public function deleteAll():void{
datagrid.dataProvider.removeAll();
}
]]>
</fx:Script>
<mx:Form x="250">
<mx:FormHeading label="User Information" fontWeight="bold"/>
<mx:FormItem required="true" label="UserName" fontWeight="bold">
<s:TextInput id="userNameInput"/>
</mx:FormItem>
<mx:FormItem required="true" label="Location" fontWeight="bold">
<s:TextInput id="locationInput"/>
</mx:FormItem>
<mx:FormItem required="true" label="Gender" fontWeight="bold" width="210">
<mx:HBox id="wrapper">
<s:RadioButtonGroup id="genderfield"/>
<s:RadioButton label="Male" groupName="genderfield"/>
<s:RadioButton label="Female" groupName="genderfield"/>
</mx:HBox>
</mx:FormItem>
<mx:FormItem>
<mx:HBox>
<s:Button label="Add" click="addItem();"/>
<s:Button label="Reset" click="resetForm();"/>
</mx:HBox>
</mx:FormItem>
</mx:Form>
<mx:DataGrid id="datagrid" x="550" y="20" dataProvider="{dgItems}" change="dgChangeHandler();">
<mx:columns>
<mx:DataGridColumn headerText="Visible" dataField="shouldDelete" textAlign="center" itemRenderer="mx.controls.CheckBox">
</mx:DataGridColumn>
<mx:DataGridColumn headerText="UserName" dataField="name" textAlign="center"/>
<mx:DataGridColumn headerText="Location" dataField="location" textAlign="center"/>
<mx:DataGridColumn headerText="Gender" dataField="gender" textAlign="center"/>
</mx:columns>
</mx:DataGrid>
<!--<s:Button x="398" y="296" label="Log" id="log_btn" click="log_btn_clickHandler(event)"/>-->
<mx:HBox x="590" y="250" horizontalGap="30">
<s:Button label="Save"/>
<s:Button label="Delete" click="deleteRow();"/>
<s:Button label="Edit" click="editRow();"/>
<s:Button label="DeleteAll" click="deleteAll();"/>
</mx:HBox>
</s:Application>
[/code]
validationfield.as
[code]
package
{
import spark.components.RadioButtonGroup;
public class ValidationField
{
private var _userName:String;
private var _location:String;
private var _gender:RadioButtonGroup;
// getter and setter for username
public function get UserName():String{
return _userName;
}
public function set UserName(value:String):void{
_userName = value;
}
//getter and setter for location
public function get Location():String{
return _location;
}
public function set Location(value:String):void{
_location = value;
}
//getter and setter for gender
public function get Gender():RadioButtonGroup{
return _gender;
}
public function set Gender(value:RadioButtonGroup):void{
_gender = value;
}
public function ValidationField()
{
//do nothing
}
}
}
[/code]
Please tell me how to delete multiple rows on check of check box from datagrid?