我正在 Flash Builder 4.6 中使用付款跟踪移动应用程序。我正在使用 Flex 数据管理系统。我有几个问题,解决如下:
- 当我添加联系人并单击“保存”按钮时,新联系人将立即在数据库中更新。 “添加”“删除”“读取”功能很好,只有“更新”时就不行了。我点击了“保存”按钮,没有任何响应 - 根本没有错误代码。
代码 (AddEditView)
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:valueObjects="valueObjects.*"
xmlns:studentsservice="services.studentsservice.*"
title="Add Student" add="view1_addHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import mx.rpc.events.ResultEvent;
protected function saveBtn_clickHandler(event:MouseEvent):void
{
if (currentState=="Add"){
var students:Students = new Students();
students.firstname = firstnameTextInput.text;
students.lastname = lastnameTextInput.text;
students.cellphone = cellphoneTextInput.text;
students.email = emailTextInput.text;
students.address = addressTextInput.text;
students.class_id = parseInt(classidTextInput.text);
students.photofile = photofileTextInput.text;
createStudentsResult.token = studentsService.createStudents(students);
studentsService.commit();
} else {
/* updateStudentsResult.token = studentsService.updateStudents(students);
studentsService.getDataManager(studentsService.DATA_MANAGER_STUDENTS).autoCommit=false; */
/* students.firstname = firstnameTextInput.text;
students.lastname = lastnameTextInput.text;
students.cellphone = cellphoneTextInput.text;
students.email = emailTextInput.text;
students.address = addressTextInput.text;
students.class_id = parseInt(classidTextInput.text);
students.photofile = photofileTextInput.text; */
updateStudentsResult.token = studentsService.updateStudents(students);
/* studentsService.getDataManager(studentsService.DATA_MANAGER_STUDENTS).autoCommit=false */;
}
}
protected function createStudentsResult_resultHandler(event:ResultEvent):void
{
navigator.replaceView(StudentDetail,event.result as int);
}
protected function cancelBtn_clickHandler(event:MouseEvent):void
{
navigator.popView();
studentsService.commit();
}
protected function view1_addHandler(event:FlexEvent):void
{
if(data == null){
currentState ="Add";
} else {
currentState ="Edit";
students = data as Students;
title ="Edit Student";
}
}
protected function updateStudentsResult_resultHandler(event:ResultEvent):void
{
navigator.popView();
}
]]>
</fx:Script>
<s:states>
<s:State name="Add"/>
<s:State name="Edit"/>
</s:states>
<fx:Declarations>
<valueObjects:Students id="students"/>
<s:CallResponder id="createStudentsResult" result="createStudentsResult_resultHandler(event)"/>
<studentsservice:StudentsService id="studentsService"/>
<s:CallResponder id="updateStudentsResult" result="updateStudentsResult_resultHandler(event)"/>
</fx:Declarations>
<s:actionContent>
<s:Button id="cancelBtn" label="Cancel" click="cancelBtn_clickHandler(event)"/>
<s:Button id="saveBtn" label="Save" click="saveBtn_clickHandler(event)"/>
</s:actionContent>
<s:Scroller left="0" right="0" top="0" bottom="0">
<s:VGroup width="100%" paddingLeft="10" paddingRight="10">
<s:Label paddingTop="15" text="First Name"/>
<s:TextInput id="firstnameTextInput" width="100%" text="@{students.firstname}"/>
<s:Label paddingTop="15" text="Last Name"/>
<s:TextInput id="lastnameTextInput" width="100%" text="@{students.lastname}"/>
<s:Label paddingTop="15" text="Cellphone"/>
<s:TextInput id="cellphoneTextInput" width="100%" text="@{students.cellphone}"/>
<s:Label paddingTop="15" text="Email"/>
<s:TextInput id="emailTextInput" width="100%" text="@{students.email}"/>
<s:Label paddingTop="15" text="Address"/>
<s:TextInput id="addressTextInput" width="100%" text="@{students.address}"/>
<s:Label paddingTop="15" text="Class ID"/>
<s:TextInput id="classidTextInput" width="100%" text="{students.class_id}"/>
<s:Label paddingTop="15" text="Photo file"/>
<s:TextInput id="photofileTextInput" width="100%" text="@{students.photofile}"/>
</s:VGroup>
</s:Scroller>
</s:View>
代码 (StudentView)
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:valueObjects="valueObjects.*"
xmlns:studentsservice="services.studentsservice.*"
title="Add Student" add="view1_addHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import mx.rpc.events.ResultEvent;
protected function saveBtn_clickHandler(event:MouseEvent):void
{
if (currentState=="Add"){
var students:Students = new Students();
students.firstname = firstnameTextInput.text;
students.lastname = lastnameTextInput.text;
students.cellphone = cellphoneTextInput.text;
students.email = emailTextInput.text;
students.address = addressTextInput.text;
students.class_id = parseInt(classidTextInput.text);
students.photofile = photofileTextInput.text;
createStudentsResult.token = studentsService.createStudents(students);
studentsService.commit();
} else {
updateStudentsResult.token = studentsService.updateStudents(students);
}
}
protected function createStudentsResult_resultHandler(event:ResultEvent):void
{
navigator.replaceView(StudentDetail,event.result as int);
}
protected function cancelBtn_clickHandler(event:MouseEvent):void
{
navigator.popView();
studentsService.commit();
}
protected function view1_addHandler(event:FlexEvent):void
{
if(data == null){
currentState ="Add";
} else {
currentState ="Edit";
students = data as Students;
title ="Edit Student";
}
}
protected function updateStudentsResult_resultHandler(event:ResultEvent):void
{
navigator.popView();
}
]]>
</fx:Script>
<s:states>
<s:State name="Add"/>
<s:State name="Edit"/>
</s:states>
<fx:Declarations>
<valueObjects:Students id="students"/>
<s:CallResponder id="createStudentsResult" result="createStudentsResult_resultHandler(event)"/>
<studentsservice:StudentsService id="studentsService"/>
<s:CallResponder id="updateStudentsResult" result="updateStudentsResult_resultHandler(event)"/>
</fx:Declarations>
<s:actionContent>
<s:Button id="cancelBtn" label="Cancel" click="cancelBtn_clickHandler(event)"/>
<s:Button id="saveBtn" label="Save" click="saveBtn_clickHandler(event)"/>
</s:actionContent>
<s:Scroller left="0" right="0" top="0" bottom="0">
<s:VGroup width="100%" paddingLeft="10" paddingRight="10">
<s:Label paddingTop="15" text="First Name"/>
<s:TextInput id="firstnameTextInput" width="100%" text="@{students.firstname}"/>
<s:Label paddingTop="15" text="Last Name"/>
<s:TextInput id="lastnameTextInput" width="100%" text="@{students.lastname}"/>
<s:Label paddingTop="15" text="Cellphone"/>
<s:TextInput id="cellphoneTextInput" width="100%" text="@{students.cellphone}"/>
<s:Label paddingTop="15" text="Email"/>
<s:TextInput id="emailTextInput" width="100%" text="@{students.email}"/>
<s:Label paddingTop="15" text="Address"/>
<s:TextInput id="addressTextInput" width="100%" text="@{students.address}"/>
<s:Label paddingTop="15" text="Class ID"/>
<s:TextInput id="classidTextInput" width="100%" text="{students.class_id}"/>
<s:Label paddingTop="15" text="Photo file"/>
<s:TextInput id="photofileTextInput" width="100%" text="@{students.photofile}"/>
</s:VGroup>
</s:Scroller>
</s:View>
如果有人解决过类似的问题,请指导我解决这个问题。预先感谢您。
最佳答案
我的怀疑studentsService.commit();正在将数据保存到数据库中,如果 currentState='edit' 则此代码无法访问。因此,在 else block 中,您还必须执行 StudentsService.commit();
关于mysql - 更新数据库 - FLEX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20812165/