How to reset View Object row state to Unmodified

Hi,
My requirement is as follows. In my home page, I have a table listing master records with links to a master detail page. In this master detail page, the master is displayed in a form, and details in an editable table. There is also a button that is used to "Add 5 New Detail Rows". User will use this button to add multiple new detail records for insertion.
Anyway, when user visits this master detail page, I should also programmatically add 5 new detail rows. For this, I define a custom method in the master view object class (called add5MoreRows()...see below), define the binding to this custom method and add invokeAction executable in the page definition.
public void add5MoreRows() {
DlistHdrVORowImpl row = (DlistHdrVORowImpl) getCurrentRow();
createMoreLineDetailRows(row, 5);
// Need to reset the master row state to Unmodified
public void createMoreLineDetailRows(DlistHdrVORowImpl row, int howMany) {
RowSet detailRowSet = (RowSet) row.getDlistLnVO();
for (int i=0;i<howMany;i++) {
Row detailRow = detailRowSet.createRow();
detailRowSet.insertRow(detailRow);
detailRow.setNewRowState(Row.STATUS_INITIALIZED);
The problem here is when I add these detail records, ADF sets the master record to "dirty". My question is how do we reset the state of the master view object row to "Unmodified".

Frank,
That's my first thought. But I cannot find STATUS_UNMODIFIED in View Object. I understand the status can be set in Entity Object. How do we get ahold of Entity Object from View Object?
Thanks.
Message was edited by:
user489605

Similar Messages

  • JSP/BC4J app: How to get view object row data into a scriplet variable?

    I have a JSP application using BC4J data tags. Within a rowsetiterate tag, how can I get the data value of an attribute for the current row into a scriplet variable?
    Thanks,
    Steve

    Using the <jbo:Row> tag like this:
      <jbo:RowsetIterate .... >
        <%--
         | Establish a scriptable variable "curRow" for the current row
         +-->
        <jbo:Row id="curRow" action="current"/>
        <%
          String foo = (String)curRow.getAttribute("YourAttrName");
        %>

  • View object Rows

    Hi,
    I am extending an OAF page. In which I am trying to get access to all the rows of a view object. This view object is used in an advance table. The advance table shows me 15 rows. 10 rows at a time(Advance table functionality).
    Now when I write this code, it return me 15 as a result.
    String.valueOf(vo.getRowCount()But when I try to run this code to iterate to each and every row, it just returns me 10 rows.
    AwardLineVOImpl vo = (AwardLineVOImpl)am.findViewObject("AwardLineVO");
    AwardLineVORow vorow = (AwardLineVORow)vo.getCurrentRow();
         while(vo.hasNext()){
            vorow = (AwardLineVORow)vo.next();
            oapagecontext.putDialogMessage(new OAException(vorow.getBidNumber()));
         }I want to know how can I get access to all the rows in the view object. As I can see the advance table shows 10 rows at a time. And when you click next, the next 10 rows are shown.
    Regards,
    B

    The "row state" is only meant for entity object rows, not for view object rows.
    For further details and a possible solution, please check How to identify inserted/modified row(s) in a VO
    (Not related) Mr. "73012", I noticed you posted lots of answers on this forum lately. Nice of you that you want to help, but much too often (IMHO) you are not explicit enough to provide a useful solution. Or, sometimes, not quite attentive to the question...
    If you are an Oracle employee, please take a bit more time to read the question; and maybe make your name public... If not, the same ;)
    Thanks,
    Adrian

  • How to prevent creation of view object rows when using browser refresh butt

    HI i have the following problem:
    I have a creation form using a partial submition. The problem is that if i have entered some value by using autosubmit , this value will be setted as attribute in the ViewObject . After that if i click refresh button of the browser then the new Row of the view object will be created and i will have a pending row with setted attribute. So if execute commit then the both rows will be tried to commit. How can i prevent this?
    Krasi

    Hi,
    If i've understood you have a invokeAction that create a new row, right? If yes put on condition that it invokeAction won't invoke if is a postback.
    Let me know if i miss understand your doubt.
    Best Regards

  • How to reset view criteria in transient view object

    Hi,
    I have a view object with one transient attribute:
    ViewCriteria vc = null;
    ViewCriteriaRow vcRow = null;
    ViewObject vo = am.findViewObject("TestView");
    vo.setQueryMode(ViewObject.QUERY_MODE_SCAN_VIEW_ROWS);
    Row newRow1 = vo.createRow();
    newRow1.setAttribute("TestAttr", new Number(10));
    vo.insertRow(newRow1);
    Row newRow2 = vo.createRow();
    newRow2.setAttribute("TestAttr", new Number(20));
    vo.insertRow(newRow2);
    ViewCriteria vc = null;
    ViewCriteriaRow vcRow = null;
    vc = vo.createViewCriteria();
    vc.setCriteriaMode(ViewCriteria.CRITERIA_MODE_CACHE);
    vcRow = vc.createViewCriteriaRow();
    vcRow.setAttribute("TestAttr", new Number(10));
    vc.addElement(vcRow);
    vo.applyViewCriteria(vc);
    vo.executeQuery();
    System.out.println("Rows: "+vo.getEstimatedRowCount());  // Works as expected
    vo.getViewCriteria().resetCriteria();  // This code should reset view criteria
    vc = vo.createViewCriteria();
    vc.setCriteriaMode(ViewCriteria.CRITERIA_MODE_CACHE);
    vcRow = vc.createViewCriteriaRow();
    vcRow.setAttribute("TestAttr", new Number(20));
    vc.addElement(vcRow);
    vo.applyViewCriteria(vc);
    vo.executeQuery();
    System.out.println("Rows: "+vo.getEstimatedRowCount());  // Returns 0 rows - should return 1How to reset and apply view criteria ?

    try to remove the previously view criteria. ie
    ViewObjectImpl vo = this.getSomeViewObject();
    ViewCriteria vc = vo.getViewCriteria("criteria_name");
    vo.removeViewCriteria("criteria_name");
    vc.resetCriteria();
    vo.applyViewCriteria(vc);
    see the link below
    http://adfcodebits.blogspot.com/2010/04/bit-7-reseting-view-criteria-associated.html

  • How to filter View Objects on Main Page - Unbounded Task Flow

    Hi All,
    Version: 11.1.1.4
    I have a scenario where I am trying to filter the Employee information by EmployeeID and show their related Items. I can do this if I encapsulate Employee and / or Items in bounded task flows and expose their view Criteria in methods that I am setting on the App Module. I could also add the bind variable to the View Object queries. The problem I am having is that I want to display a pop up based on the item they select. My issue is that I can't seem to figure out how to either grab the item row selected and pass it to the pop up (Can't create a control flow from a page fragment to a page - which as far as I can understand the pop up in the task flow has to be a page and not a page fragment) or drop the employee view object and item view object on the main page and have them be filtered.
    So basically two issues:
    1. If I use the Employee and Item bounded task flows and place them as regions on the main page then I am having difficulties passing the row selection (item selected) and pass it to my pop up window (another task flow).
    2. If I place the employee and item view objects on my main page the original methods I am using to filter the data are not getting called at all. I have tried placing them in the adf-config task flow prior to my main page view and going into my main page page def and adding them as method calls in the binding.
    I am sure I am doing something wrong or maybe even creating an invalid approach, but I should be able to filter my employee and item data on load within my unbounded task flow or use the data within my bounded task flows and generate a popup with data I am collecting from my item row.
    As always greatly appreciate the feedback....still really ignorant with ADF.
    --S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    I figured out the issue Shay. I didn't have my pageFlowScope value set on the task-flow-call. So I had the parameter name and value set on the input of my downstream bounded task flow, but when I add the control to call the task flow I didn't have the task-flow call value set. That piece was not intuitive to me. It makes sense that it would have to know how to pass the value.....just wasn't sure where it should be set.
    --S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Sort view object rows with transient attributes

    Hi ,
    Is it possible to sort the results of a view object based on the populated transient attributes ?
    Best regards
    K

    K,
    Have you had a look at section 27.5 of the ADF Developer's Guide for Forms/4GL Developers ("Performing In-Memory Sorting and Filtering of Row Sets") - I've not tried it with transient attributes, but it does describe how to do in-memory sorting, as opposed to the normal way of sorting which is to send an ORDER BY to the database.
    Hope this helps,
    John

  • Own View Object Rows filtering

    Hello,
    I've created a method which is filtering View Object for specific rows faster than getFilteredRows(). It is done by dynamic setting "where clause" and then removing it. Full method looks like that:
    public static Row[] filterRows(ViewObjectImpl vo, Map<String, Object> columns) {
            ArrayList<String> stringArray = new ArrayList<String>();
            for(String s : columns.keySet()) {
                stringArray.add(s + " = :" + s);
                vo.defineNamedWhereClauseParam(s, null, null);
                vo.setNamedWhereClauseParam(s, columns.get(s));
            String[] strArray = new String[stringArray.size()];
            String whereClause = StringUtils.join(stringArray.toArray(strArray), " AND ");
            vo.setWhereClause(whereClause);
            vo.executeQuery();
            RowSetIterator it = vo.createRowSetIterator(null);
            ArrayList<Row> rows = new ArrayList<Row>();
            while(it.hasNext()) {
                rows.add(it.next());
            for(String s : columns.keySet()) {
                vo.removeNamedWhereClauseParam(s);
            vo.getDefaultRowSet().setExecuteParameters(null, null, true);
            vo.setWhereClause(null);
            vo.getDefaultRowSet().setWhereClauseParams(null);
            vo.executeQuery();
            Row[] rowsArray = new Row[rows.size()];
            return rows.toArray(rowsArray);
        }Now, when i try something like this:
    MyViewObjectImpl searchVo = getContractAppMod().getMyViewObject1();
    Row[] rows = ContractUtils.filterRows(searchVo, "umwa_id", new Number(4));
    MyViewObjectRowImpl searchRow = (MyViewObjectRowImpl) rows[0];
    System.out.println(searchRow.getUmwaId());Everything seems to be OK, the values are correct, but when i try this:
    searchRow.setFirstName("Name");Value in adf table is not updating immediately like it is when i use searchVo.getFilteredRows("UmwaId", new Number(4)); instead of my filterRows method. Why is that happening and how to fix it?
    Thanks.
    Edited by: 983864 on 2013-02-23 04:40

    Definition of static filterRows() method is inside normal class named ContractUtils. Then i'm calling this method in bean class ContractBean. This bean is also declared in task flow. I don't know exactly how to rewrite my code for access the method through the ADF binding layer. Can you give me more specific clues? Thanks for all.

  • How to create View Object with Multiple Updatable Entity Objects

    I want both the entities in the view object to support creating new rows but when i give create insert it allows to insert only on the parent and not the child. I found this link
    http://docs.oracle.com/cd/E21043_01/web.1111/b31974/bcadvvo.htm#CEGCAJCI which overrides the exiting classes. but i would like to do it declarative . Is there any other way to do it?
    I am using Jdeveloper 11g version 2.
    Thanks in advance,
    Rakesh

    But when i tried to add a new row it showed this error
    oracle.jbo.AttrValException: JBO-27014: Attribute LookupTypeId1 in FoundationModuleAM.VikLookupTypeBaseVO is required.
         at oracle.jbo.server.JboMandatoryAttributesValidator.validate(JboMandatoryAttributesValidator.java:224)
         at oracle.jbo.server.EntityDefImpl.validate(EntityDefImpl.java:3095)
         at oracle.jbo.server.EntityCache.validate(EntityCache.java:3599)
         at oracle.jbo.server.EntityImpl.validateEntity(EntityImpl.java:2285)
         at oracle.jbo.server.EntityImpl.validate(EntityImpl.java:2464)
         at oracle.jbo.server.DBTransactionImpl.validate(DBTransactionImpl.java:4515)
         at oracle.insurance.viking.foundation.model.common.VikingDBTransactionImpl.validate(VikingDBTransactionImpl.java:46)
         at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:2008)
         at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:2352)
         at oracle.insurance.viking.foundation.model.common.VikingDBTransactionImpl.commit(VikingDBTransactionImpl.java:37)
         at oracle.adf.model.bc4j.DCJboDataControl.commitTransaction(DCJboDataControl.java:1590)
         at oracle.adf.model.binding.DCDataControl.callCommitTransaction(DCDataControl.java:1415)
         at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1428)
         at oracle.adf.model.binding.DCDataControl.invokeOperation(DCDataControl.java:2169)
         at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:731)
         at oracle.jbo.uicli.jui.JUActionBinding.actionPerformed(JUActionBinding.java:193)
         at oracle.jbo.uicli.controls.JUNavigationBar.doAction(JUNavigationBar.java:412)
         at oracle.jbo.jbotester.NavigationBar.doAction(NavigationBar.java:112)
         at oracle.jbo.uicli.controls.JUNavigationBar$NavButton.actionPerformed(JUNavigationBar.java:118)
         at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
         at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
         at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
         at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
         at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
         at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
         at java.awt.Component.processMouseEvent(Component.java:6289)
         at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
         at java.awt.Component.processEvent(Component.java:6054)
         at java.awt.Container.processEvent(Container.java:2041)
         at java.awt.Component.dispatchEventImpl(Component.java:4652)
         at java.awt.Container.dispatchEventImpl(Container.java:2099)
         at java.awt.Component.dispatchEvent(Component.java:4482)
         at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
         at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
         at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
         at java.awt.Container.dispatchEventImpl(Container.java:2085)
         at java.awt.Window.dispatchEventImpl(Window.java:2478)
         at java.awt.Component.dispatchEvent(Component.java:4482)
         at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
         at java.awt.EventQueue.access$000(EventQueue.java:85)
         at java.awt.EventQueue$1.run(EventQueue.java:603)
         at java.awt.EventQueue$1.run(EventQueue.java:601)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
         at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
         at java.awt.EventQueue$2.run(EventQueue.java:617)
         at java.awt.EventQueue$2.run(EventQueue.java:615)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
         at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
         at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
         at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
         at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
         at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
         at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

  • New view object row does not get committed to DB

    Hi guys,
    on a taskflow with a new transaction I have a form to enter a new record on an entity-based view object.
    Before the page is called I call the CreateInsert Operation to create the new record on that view object.
    There are quite a few attributes that have default values which I determine in the ViewRowImpl's create method (using populateAttributeAsChanged to set the values).
    Now if none of the inputValues in the form is filled manually and I want to save the data (default values are sufficient to save the record) the taskflow return action commit does not commit the data to the db. As soon as I manually enter one value into any field the same return action commits the record correctly to the db. There is no error message and the new record is visible in the application because it is inserted into the view's iterator...
    Is there any way to mark the new row as changed/insert if only the default values are filled? Or am I doing something wrong?
    Using JDev 11.1.1.5
    Achim

    Add the following method in your RowImpl class:
    public void setNewRowState(byte b) {
         if (b != Row.STATUS_INITIALIZED ||
             getNewRowState() != Row.STATUS_NEW) {
             super.setNewRowState(b);

  • How to use view objects in entity impls?

    Hi!
    I would like to access a view object to implement business logic
    in an entity impl class method. How can this be done? More
    precisely I would of course like to do this in the context of
    the "current" Application Module the Entity "lives" in. I think
    this has to be possible because you can use a list validator for
    an entity objects attribute, which gets it's data out of a view
    object.
    Any help would be very welcome!
    Regards
    Stefan

    Stephan,
    Just to make things clear, View Objects access Entity Objects
    and you should implement your busines logic in the entity
    objects. This is the way BC4J was designed. It allows for
    reuse of your components and build different views (View
    Objects) ontop of Entity Objects.
    View objects do query the database and populate the entity
    objects. However, it is from the cached data in the entity
    objects where DML occurs (insert, update, delete). You want to
    put your validation at this level because you do not want to
    make a trip to the database if it does not validate.
    I recommend reading a whitepaper on J2EE development and
    BC4J. The URL
    http://otn.oracle.com/products/jdev/htdocs/j2ee_with_bc4j/j2ee_wi
    th_bc4j.html.
    Happy Reading!
    Hi!
    I would like to access a view object to implement business logic
    in an entity impl class method. How can this be done? More
    precisely I would of course like to do this in the context of
    the "current" Application Module the Entity "lives" in. I think
    this has to be possible because you can use a list validator for
    an entity objects attribute, which gets it's data out of a view
    object.
    Any help would be very welcome!
    Regards
    Stefan

  • App module view object row currency and task flows

    Hello -
    Using JDev 11gR1. My application uses ADF Rich Faces with ADFBC.
    I have case where I want to
    a. select a row in a table based on a view object
    b. hit a button to invoke a method in an application module.
    c. in the app mod method, call getMyViewObject().getCurrentRow() to get the row selected by the user
    d. "do something" with the row
    In 10.1.3, this worked fine.
    In 11gR1, I am having problems:
    1. The above situation works fine if I have a regular page.
    HOWEVER,
    2. The above situation does NOT work if my table is in a page fragment in a task flow. (The getCurrentRow() returns NULL.)
    For case #2 I've checked the following:
    * verified that the selectedRowKeys and selectionListener attributes were set on the table in the page
    * verified that I'm using the correct app module instance (I have nested application modules).
    * experimented w/various transaction and data control scope settings in the task flow definition.
    So... from those details is there something obvious I am doing wrong? It looks like cases #1 and #2 above use different row set iterators. Is there a way to grab the correct row set from within my app module method? Does this have something to do with the data control scope defined by the task flow? (For 11g do I need to "rethink" sticking logic in the app module and instead placing it within a managed bean get access to my ADFBC objects via the bindings layer?)
    Thank you for reading my question,
    -- Scott

    See this article for View Object tuning tips:
    http://www.oracle.com/technology/products/jdev/tips/muench/voperftips/index.html
    Are you planning to use this AM as a nested AM inside other application modules?
    If you don't the "selection AM" will have its own, separate database connection/transaction.
    If you do, it will share connection, transaction with its containing "root" AM.
    It may not be relevant to your application, but just realize (which is explained in the article I point to above) that view objects that are not related to entity objects do not "see" pending changes in the current transaction. That feature depends on the VO/EO cooperation. It's fine to build VO's without an EO -- in fact we've made it easier to do this in 10.1.2 in the Design Time wizards -- but you just want to make sure you realize what features it's giving up. If you don't need those EO-related features, then by all means create an Expert Mode VO that's not related to EO's.

  • How to refresh view object in doDML

    How can i refresh an view object in the doDML Method?

    How are you changing the key? - is it using the iterator or attribute value in bindings (or) directly thru the view object.
    if you are doing directly on the view object, on commit - you might have to refresh the iterator by calling executeQuery method on it.
    BindingContext bctx = BindingContext.getCurrent();
    BindingContainer bindings = bctx.getCurrentBindingsEntry();
    DCIteratorBinding dcIter = (DCIteratorBinding) bindings.get("DEPARTMENTS_VO1Iterator");
    if(dcIter != null){
    dcIter.executeQuery();
    }Thanks,
    Navaneeth

  • How to create view object for a predefined Oracle view

    Trying to create an entity object with no success,,,
    I have an Oracle view(complex query in PL/SQL) that I need to encapsulate as a View Object then represent a column from this view as a '' | | linkcolumn | | ''
    then get a reference of the requestParameter "p" in this case that I need to use as whereclause parameter on another view object that is part of the ListPage.jsp.
    The application is basically a page of organization links that when click filters their reports as a list,
    In Jdeveloper's context webBean(RowSetBrowser list [org links] to RowSetBrowser [org report list])
    Can I implement this functionallity using the wizards or possibly writing custom code using the standard webBeans.

    Jerry,
    First, you can create an entity object based on an Oracle view. If you check the "Views" checkbox in the EO wizard, you'll see a list of database views. Then you can create a view object based on your entity object, and use it like any other view object.
    As for getting the page into the format you want, I suggest you start by generating your page using the BC4J JSP wizard, then customize the generated JSP.
    Thanks
    Blaise

  • How to Create View Object Dynamically

    Hi,
    I hav a requirement to create a view object dynamically.
    can anybody plz help me.
    Thanks
    Nan:)

    Hi,
    oracle.apps.fnd.framework.server.OAApplicationModuleImpl amImpl = (oracle.apps.fnd.framework.server.OAApplicationModuleImpl)AM;
    OAViewDef viewDef = AM.getOADBTransaction().createViewDef();
    viewDef.setSql(sql.toString());
    viewDef.setExpertMode(true);
    //viewDef.setViewObjectClass("oracle.apps.fnd.framework.server.OAViewObjectImpl");
    //viewDef.setViewRowClass("oracle.apps.fnd.framework.server.OAViewRowImpl");
    oracle.jbo.ViewObject oaviewobject=amImpl.createViewObject("TableVO",viewDef);
    if(oaviewobject !=null)
    TableBean.setViewUsageName("oaviewobject");
    TableBean.setViewAttributeName("TncId");
    Thanks
    Nani:)

Maybe you are looking for

  • How do I mount my internal hard drive?

    Can anyone tell me how to mount my internal hard drive?  I have a macbook air late 2010 model.  128gb flash storage.  I was having problems because it would freeze on me after sleep.  I ran disk utility and repair disk.  It says everything is fine. 

  • How do i print a pdf with markups made on an ipad?

    I make markups, comments and pop out notes on a pdf from an ipad.  How do I print that document with all the comments showing up??

  • Query on Coded UI maps namespace

    Hi, I have query on CodedUI's UIMap namespace Lets say I have project "CodedUITestProject4". I am adding one UIMap into it. Bydefault namespace of this UIMap becomes " "CodedUITestProject4.UIMap2Classes" My question is this namespace correct? See the

  • Add price gorup to FBL3N report

    Could any one help me to find where the ALV is called in standard program ‘RFITEMGL’ of Tcode ‘FBL3N’ since I need to add price group from table ‘KNVV’ to the report? Thanks

  • Draggable Pie Chart

    Hi everyone, I'm new to Flex, and I see that creating a pie chart is normally very easy with the Pie Chart component. However, I need to create a pie chart where the edges of the slices are draggable. In other words, I want the user to be able to res