mysql - 更新数据库 - FLEX

标签 mysql actionscript-3 apache-flex flex4 crud

我正在 Flash Builder 4.6 中使用付款跟踪移动应用程序。我正在使用 Flex 数据管理系统。我有几个问题,解决如下:

  1. 当我添加联系人并单击“保存”按钮时,新联系人将立即在数据库中更新。 “添加”“删除”“读取”功能很好,只有“更新”时就不行了。我点击了“保存”按钮,没有任何响应 - 根本没有错误代码。

代码 (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/

相关文章:

用于回退场景的 MySQL 复制

sql - 在 JOIN 中选择最新记录时出现问题

actionscript-3 - 如何将图像发送到 AS3 中

regex - string.search (".") 总是返回 0

actionscript-3 - Direct Connect 上的 Adob​​e Cirrus 错误“在 flash.net.NetStream 上找不到属性 startTransmit”

mysql - SELECT,第二个表中的 2 个计数,第三个表中的 RIGHT JOIN

mysql - 选择在 SQL 中查找更新的列和行

actionscript-3 - 如何检查swf在AS3中是否已经失焦

javascript - 相当于 : my_obj. 高度 += 10;在 adobe animate HTML5 Canvas 中?

actionscript-3 - 在内部组件上调用函数