'Program/Flex'에 해당되는 글 5건
- 2009.12.01 Flex 참고 사이트
- 2008.06.30 dispatchEvent, addEventListener 던지고 받기~
- 2008.06.27 Local DB - SQLite 예제
- 2008.06.27 페이징
- 2008.06.26 화면전환
dispatchEvent(new ListEvent(ListEvent.FILTER,sendData, true, false));
이런식으로 던져준다.. 앞에 상수, 뒤에 boolean 2개는 필수닷..
클래스 선언~(com.events.ListEvent)
package com.events
{
import flash.events.Event;
public class ListEvent extends Event
{
public static const FILTER:String = "filter";
public function ListEvent(type:String, data:Array=null, bubbles:Boolean=false, cancelable:Boolean=false){
super(type, bubbles, cancelable);
item = data;
}
public var item:Array;
}
}
받는 곳~
import com.events.ListEvent;
private function load():void{
connectDB();
Application.application.systemManager.addEventListener(com.events.ListEvent.FILTER, _filter);
}
private function _filter(e:com.events.ListEvent):void{
requestData = e.item;
selectData();
}
db파일위치때문에 한참 해멨다..
C:\Documents and Settings\BoKi\Application Data\sqlLife\Local Store/
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" applicationComplete="init()"
backgroundColor="0x003030" focusRect="false" layout="vertical">
<mx:Script>
<![CDATA[
import mx.effects.Fade;
import mx.controls.List;
import mx.controls.TextInput;
import mx.events.DataGridEvent;
import mx.collections.ArrayCollection;
import mx.utils.ArrayUtil;
import mx.controls.Alert;
import flash.data.SQLConnection;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
import mx.events.ListEvent;
import flash.filesystem.File;
[Bindable]
private var resultData:Array;
private var conn:SQLConnection = new SQLConnection();
private var selectStmt:SQLStatement = new SQLStatement();
private function connectDB():void{
// 로컬 데이터베이스 존재 확인 그리고 열려져 있는지 또는 새 테이블 만들기
var dbFile:File = File.applicationStorageDirectory.resolvePath("aa.db");
trace(dbFile.nativePath);
if(dbFile.exists) {
conn.addEventListener(SQLEvent.OPEN, openHandler);
conn.open(dbFile);
}else {
conn.addEventListener(SQLEvent.OPEN, newDatabaseHandler);
conn.open(dbFile);
}
}
private function openHandler(event:SQLEvent):void{
// selectData();
trace("The database was opened");
}
// 데이터 가져오기
private function selectData():void{
selectStmt.sqlConnection = conn;
var sql:String = "SELECT * FROM employees";
selectStmt.text = sql;
selectStmt.addEventListener(SQLEvent.RESULT, selectHandler);
selectStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
selectStmt.execute();
}
private function selectHandler(event:SQLEvent):void{
resultData = selectStmt.getResult().data;
}
// 새 테이블 생성하기
private function newDatabaseHandler(event:SQLEvent):void{
createTable();
trace("Table created");
}
private function createTable():void{
var createStmt:SQLStatement = new SQLStatement();
createStmt.sqlConnection = conn;
var sql:String =
"CREATE TABLE IF NOT EXISTS employees (" +
"empId INTEGER PRIMARY KEY AUTOINCREMENT, " +
"firstName TEXT, " +
"lastName TEXT, " +
"salary NUMERIC CHECK (salary > 0)" +
")";
createStmt.text = sql;
createStmt.addEventListener(SQLEvent.RESULT, createTableResult);
createStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
createStmt.execute();
}
private function createTableResult(event:SQLEvent):void{
trace("Employees table created ");
}
//데이터 삽입
private function insertData():void{
var insertStmt:SQLStatement = new SQLStatement();
insertStmt.sqlConnection = conn;
var sql:String = "INSERT INTO employees (firstName, lastName, salary) VALUES ('Eric', 'Moon', 80000)";
insertStmt.text = sql;
insertStmt.addEventListener(SQLEvent.RESULT, insertHandler);
insertStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
insertStmt.execute();
}
private function insertHandler(event:SQLEvent):void{
trace("INSERT statement succeeded");
selectData();
}
// 데이터 삭제
private function deleteData():void{
if (resultAC.length >0)
var empid:int = dg.selectedItem.empId;
var deleteStmt:SQLStatement = new SQLStatement();
deleteStmt.sqlConnection = conn;
var sql:String = "DELETE FROM employees WHERE empID="+empid;
deleteStmt.text = sql;
deleteStmt.addEventListener(SQLEvent.RESULT, deleteHandler);
deleteStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
deleteStmt.execute();
resultAC.removeItemAt( dg.selectedIndex);
}
private function deleteHandler(event:SQLEvent):void{
trace("Delete statement succeeded");
selectData();
}
// 에러 처리
private function errorHandler(event:SQLErrorEvent):void{
var errMessage:String;
errMessage = "Error code: " + event.error.message + "\r";
errMessage += "Details : " + event.error.message ;
Alert.show(errMessage);
}
private function init():void{
//stage.displayState = StageDisplayState.FULL_SCREEN;
connectDB();
}
// 데이터 업데이트
private function updateData():void{
var updateStmt:SQLStatement = new SQLStatement();
updateStmt.sqlConnection = conn;
var sql:String = "UPDATE employees " +
"SET firstName = '" + dg.selectedItem.firstName + "', " +
"lastName = '" + dg.selectedItem.lastName + "', " +
"salary = '" + dg.selectedItem.salary + "' " +
"WHERE empID="+ dg.selectedItem.empId;
updateStmt.text = sql;
updateStmt.addEventListener(SQLEvent.RESULT, updateHandler);
updateStmt.addEventListener(SQLErrorEvent.ERROR, errorHandler);
updateStmt.execute();
}
private function updateHandler(event:SQLEvent):void{
trace("Update statement succeeded");
selectData();
}
]]>
</mx:Script>
<mx:ArrayCollection id="resultAC" source ="{ArrayUtil.toArray(resultData)}" />
<mx:VBox height="100%">
<mx:DataGrid id="dg" dataProvider="{resultAC}" editable="true" height="100%" width="100%">
<mx:columns>
<mx:DataGridColumn headerText="Emp ID" dataField="empId"/>
<mx:DataGridColumn headerText="Last Name" dataField="lastName"/>
<mx:DataGridColumn headerText="First Name" dataField="firstName"/>
<mx:DataGridColumn headerText="Salary" dataField="salary"/>
</mx:columns>
</mx:DataGrid>
<mx:HBox width="100%">
<mx:Button label="Create Table" click="createTable();"/>
<mx:Button label="Select" click="selectData();"/>
<mx:Button label="Insert" click="insertData()"/>
<mx:Button label="Update" click="updateData();"/>
<mx:Button label="Delete" click="deleteData();"/>
</mx:HBox>
</mx:VBox>
</mx:WindowedApplication>
출처 : http://cafe.naver.com/flexcomponent.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=5203
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="load()">
<mx:Style>
</mx:Style>
<mx:Script>
<![CDATA[
import mx.events.ItemClickEvent;
import mx.collections.ArrayCollection;
include "spXML_List.as";
import mx.controls.Alert;
import mx.collections.ArrayCollection;
import mx.controls.Button;
[Bindable]
public var nav:ArrayCollection = new ArrayCollection();
private function ClickPrev():void
{
var page:int = spXML_List.page;
if(page <= 1){
Alert.show('처음 페이지 입니다.');
}else{
page-=1;
spXML_List.page = page;
}
}
private function ClickNext():void
{
var page:int = spXML_List.page;
if(page >= spXML_List.total_page){
Alert.show("마지막 페이지 입니다.");
}else{
page+=1;
spXML_List.page = page;
}
}
private function load():void{
for(var i:Number = 2; i < 50; i++){
spXML_List.newElement = <item>
<num>{i}</num>
<constnm>민방위 경보시스템 교체,보강조달구매 설치 </constnm>
<itemcode>통신</itemcode>
<basic>32,000,000</basic>
<yega>31,970,640</yega>
<success>31,493,000</success>
<spb>98.4156</spb>
<ypb>-0.0917</ypb>
<sypb>12.1609</sypb>
<constdt>08.06.20</constdt>
</item>;
}
pageing(spXML_List.page);
}
private function pageing(page:Number):void{
var p_min:Number = spXML_List.p_min;
var p_max:Number = spXML_List.p_max;
var total_page:Number = spXML_List.total_page;
nav.removeAll();
if(p_min > 1){
nav.addItem({label:"이전", data:p_min-1, id:"pre"});
}
//Alert.show(page.toString());
for(var j:Number = p_min; j <= p_max; j++){
nav.addItem({label:j, data:j});
}
if(p_max < total_page){
nav.addItem({label:"다음", data:p_max+1});
}
spXML_List.page = page;
}
private function navigatePage(event:ItemClickEvent):void{
var lb:String = event.item.label;
if(lb.indexOf("다음") > -1){
spXML_List.p_min = event.item.data;
spXML_List.p_max = event.item.data + 4;
lb = event.item.data;
}else if(event.item.id == 'pre'){
spXML_List.p_min = event.item.data - 4;
spXML_List.p_max = event.item.data;
lb = event.item.data;
}
pageing(Number(lb));
}
private function N_page(min:int, max:int):void{
trace(min);
}
]]>
</mx:Script>
<mx:Canvas id='listBox' width="80%" borderStyle="solid" backgroundColor="blue" showEffect="Fade" hideEffect="Fade" x="35" y="29">
<mx:Panel layout="absolute" title="List" width="100%" x="0">
<mx:DataGrid width="100%" height="285"
rowCount="12"
id="ListGrid"
dataProvider="{spXML_List.item}"
horizontalCenter="0"
fontSize="12"
fontFamily="Arial"
>
<mx:columns>
<mx:DataGridColumn headerText="번호" dataField="num" width="35" />
<mx:DataGridColumn headerText="공고명" dataField="constnm" width="300"/>
<mx:DataGridColumn headerText="업종" dataField="itemcode"/>
<mx:DataGridColumn headerText="기초금액" dataField="basic"/>
<mx:DataGridColumn headerText="예정가격" dataField="yega"/>
<mx:DataGridColumn headerText="1순위 투찰금액" dataField="success"/>
<mx:DataGridColumn headerText="1순위 기초대비" dataField="spb"/>
<mx:DataGridColumn headerText="예가/기초" dataField="ypb"/>
<mx:DataGridColumn headerText="1순위사정율" dataField="sypb"/>
<mx:DataGridColumn headerText="입찰일" dataField="constdt"/>
</mx:columns>
</mx:DataGrid>
</mx:Panel>
</mx:Canvas>
<mx:Text text="Total: {spXML_List.total_page} Page:{spXML_List.page} / {spXML_List.total_page}" fontSize="10" y="35" x="73"/>
<mx:Button label="Previous" click="ClickPrev()" x="780" y="32"/><mx:Button label="Next" click="ClickNext()" x="865" y="32"/>
<mx:ToggleButtonBar id="PageNav" x="73" y="394" dataProvider="{nav}" itemClick="navigatePage(event)" horizontalGap="5"/>
</mx:Application>
-----------------------------------------------------------------------------------------------
as파일
// ActionScript file
[Bindable]
public var spXML_List:XML =
<rr>
<total_num>49</total_num>
<total_page>10</total_page>
<page>1</page>
<p_min>1</p_min>
<p_max>5</p_max>
<item>
<num>1</num>
<constnm>민방위 경보시스템 교체,보강조달구매 설치 </constnm>
<itemcode>통신</itemcode>
<basic>32,000,000</basic>
<yega>31,970,640</yega>
<success>31,493,000</success>
<spb>98.4156</spb>
<ypb>-0.0917</ypb>
<sypb>12.1609</sypb>
<constdt>08.06.20</constdt>
</item>
</rr>;
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
>
<mx:states>
<mx:State name="w" >
<mx:SetProperty target="{left}" name="width" value="400"/>
</mx:State>
</mx:states>
<mx:transitions>
<mx:Transition fromState="*" toState="*">
<mx:Resize duration="100" target="{left}"/>
</mx:Transition>
</mx:transitions>
<mx:Canvas width="100%" height="100%"
backgroundColor="#eeeeee"
>
<mx:VBox width="40" height="100%" id="left" backgroundColor="#ffffff">
</mx:VBox>
<mx:Button x="{left.x+left.width}"
click="{
currentState = currentState==null ? 'w' : null;
trace(currentState);
}" />
</mx:Canvas>
</mx:Application>