Problems on deleting rows in UIX pages

Hi,
I am new on using BC4J, Struts and uiXML and I am having some problems on it. I have tried to make a simple create/update/delete web application.
First, I have created a DataAction which PageForward displays a table with data from a view object. This page allows the user to select a row and request its deletion by clicking on a submit button.
The event triggered by the submit button calls a DataAction that displays another PageForward, composed by a read-only form, that asks for confirmation. If the user confirms, a DataAction that performs the Delete method from the view is called and the deletion is successful.
A problem occurs when I change the readonly property of the fields of the confirmation form: the row deleted is not the selected, but a random one.
I would like to know why the readonly property of the fields change the Delete method behavior. Also, an example of a simple create/update/delete struts page flow would be appreciated.
Thanks in advance.
Verner.

Verner,
Are you using JDeveloper 10g Preview or JDeveloper 9i v9.0.3?
I'm not sure what problem you are having, but I just tried to reproduce your application by doing the following in JDeveloper 10g Preview:
1) Created new business components.
2) Created a new struts-config.xml.
3) Added to the Struts config (using the page flow modeler):
3.a) Browse data action and page forward to browse.uix
3.b) Confirm data action and page forward to confirm.uix
3.c) Delete data action.
3.d) Link from browse action to confirm action for outcome "delete".
3.e) Link from confirm action to delete action for outcome "delete".
3.f) Link from confirm action to browse action for outcome "cancel".
3.g) Link from delete action to browse action for outcome "success".
4) Then I made the delete action do the deletion by dragging the Delete operation from my data control onto the Delete data action in the page flow.
5) Then I created my UI pages.
browse.uix just has a read-only table created via the Data Control palette and then a delete button that fires the "delete" event when clicked. The delete handler returns the delete outcome.
confirm.uix has a read-only form also dragged from the Data Control palette for the same data control. There's a delete and a cancel button, each of which fire an event of the same name that returns an outcome of the same name.
When I run browseDataAction, I see my table. When I click "Delete", I see the read-only form with the details for the selected row. Clicking "Delete" from the confirmation page removes the same row I saw in the confirmation page, then goes back to the browse page showing the same range but with the given row removed.
If you continue to see a problem, what exactly is wrong? It should be the case that (A) the row selected in the table, (B) the row whose details are shown in the confirmation page, and (C) the row that gets deleted are the same row. If it's not the case that A = B = C, please give more details about what values of these three rows you are seeing. Is A=B but not =C? Or is B=C but not =A?
Hope this helps,
-brian
UIX Team

Similar Messages

  • Problem in deleting Rows of JTable after sorting it

    Hi all,
    I'm getting problems in Removing Row(s) after sorting a JTable.
    Please find the code snippets at this URL. Thanks for your time...
    http://forum.java.sun.com/thread.jsp?forum=31&thread=459736&start=15&range=15&hilite=false&q=

    Hi Abhijeet,
    I tried it the way you said using
         wdContext.nodeBirhtday_List().nodeItab().moveFirst();
         //     loop backwards to avoid index troubles
         for (int i = n - 1; i >= 0; --i)
              current_date  = wdContext.nodeBirhtday_List().nodeItab().currentItabElement().getGbdat().getDate();
              current_month = wdContext.nodeBirhtday_List().nodeItab().currentItabElement().getGbdat().getMonth();
              if (( current_date != date_today ) && ( current_month != month_today ))
                   wdContext.nodeBirhtday_List().nodeItab().removeElement(wdContext.nodeBirhtday_List().nodeItab().
                                  getElementAt(i));                
              wdContext.nodeBirhtday_List().nodeItab().moveNext();     
    It adds records...
    According to Valerys Solution, the IPrivate<CustomController> doesnt show me the required nodes. and gives me 'Unable to resolve' error.
    Can you please suggest where I am going wrong
    Regards
    Abdullah

  • Javascript problems using HttpUnit while testing UIX pages

    Hello JDeveloper Team
    Need urgent help about testing my web pages written in UIX. I tried to use HttpUnit but I got Javascript errors. What is wrong with it ?
    I also used HtmlUnit. It works well but writing code to check the html page that is produced from a UIX is a stomachache. I mean all the ids , names of components are so absurd words. A submit button for example is a link with an image inside it but has no name or id. So there is no way to reach it with a method of HtmlUnit library.
    Can you please advice me a methodology to test my uix pages? Or is there any tool or application for this purpose ? It could be licensed . My company needs such a tool. I also tried AppPerfect but it does not support UIX.
    I need your valuable opinions. An answer that is quick would be appreciated.
    Thanks

    if you want an ID in the html, you can set it in the UIX file and it will appear
    in the html

  • Problem in deleting row from database in table component

    Hi,
    I have a table component that its content change by diffrent links.
    in this table i have a hyperlink in each row to deleting that row from dataBase.
    so i must get the current row .
    i do it like this:
    define a rowset in the page that have a delete query :
    delete from response where responseID=?
    in action of delete hyperlink ,i have:
    Integer responseId=(Integer)responseDataProvider.
    getValue("#{currentRow.value['responseID']}") ;
    getSessionBean1().getResponseRowSet().setObject(1,responseId);
    getSessionBean1().getResponseRowSet().execute();
    but in first line occure a exception:
    illigalArgument #{currentRow.value['responseID']}
    thanks.

    by using data table
    first you should get current record (row that recived action)
    then delete it by using data provider.
    I do not think that you could execute delete statement using rowSets because they just can provide Select statements.
    btw , following code will retrive clicked row from data table and
    delete that row
    try {
    RowKey rk = getTableRowGroup1().getRowKey();
    if (rk != null) {
    testDataProvider.removeRow(rk);
    testDataProvider.commitChanges();
    } catch (Exception ex) {
    log("ErrorDescription", ex);
    error(ex.getMessage());
    hth
    masoud

  • Facing problem While deleting rows and adding rows

    Hi,
    In my form i have pass values to table rows by selecting values from Dropdown list.
    i have taken 3 hidden obj and passing the dropdown values to hidden objects and then from hidden objects to table rows.
    h1,h2,h2 are hidden obj
    EMPNO,EMPNAME, DESIGNATION are drop downlist
    i have add button with the following code
    if(form1.P1.ItemSet.EMPNO.rawValue != null){
    form1.P1.ItemSet.instanceManager.addInstance();
    form1.P1.execInitialize();
    var dynamicArray = form1.P1.resolveNode("ItemSet[" + arrayIncri + "]");
    dynamicArray .EMPNO.rawValue = form1.P1.hidden.h1.rawValue;
    dynamicArray .EMPNAME.rawValue = form1.P1.hidden.h2.rawValue;
    dynamicArray .DESIGNATION.rawValue = form1.P1.hidden.h3.rawValue;
    arrayIncri++;
    form1.P1.SF1.EmpID.rawValue = null;
    form1.P1.SF1.EmpName.rawValue = null;
    form1.P1.SF1.Designation.rawValue = null;
    My delete button code is
    _ItemSet.removeInstance(this.parent.index);
    form1.P1.execInitialize();
    My problem is adding is happening while click and deleting is happening to the perticular row but once i delete paricular row then again if i want to add new row then it is taking null values . and agian if i click add then the values are passing to the next row
    means i am getting null row if i do add funtionality after delete funtionality....
    Please help me out in this..
    Subba reddy

    Hi,
    I got the answer for this query, but when i do download and upload of the files from R/3 to GRC. Still it is not showing me the new transactions which were developed in R/3.
    it means when i try to add the transaction in a function, under search mode with respective of the r/3 system, it is not showing me the search results.
    What i did was, i run the reports /VIRSA/ZCC_DOWNLOAD_DESC & /VIRSA/ZCC_DOWNLOAD_SAPOBJ and uploaded them as below in GRC.
    Text Objects - /VIRSA/ZCC_DOWNLOAD_DESC
    permissions   -  /VIRSA/ZCC_DOWNLOAD_SAPOBJ
    For each of the download i get 2 files for each and i tried to upload both of them but no luck.
    Please suggest me, as am missing anything in this process
    SV

  • Problems to delete Rows

    Hi,
    i want to delete all rows in a table which will be automaticlly updatet in a thread. the problem is that i get somtimes the message 9>=9 or 8>=3. did somebody know what that means ?!?

    it means the row index that you are trying to remove doesnt exist.
    9>=9 means that you are trying to remove row index 9 in a table that has only 9 itmes (remember its zero based)
    there's probably something dodgy with you remove code.
    off the top of my head try looping through with (rowcount - 1)

  • Problem in Delete Row

    Hai To All,
             Iam using PL 05 i have enable DeleteRow option. If i click the deleterow the row is deleted but after saving the entry there is null value in database. for example if i have 2 row in the matrix if i delete last row the content is deleted after that iam saving the matrix. In the database i have 2 rows one with content and other with null value..
    Whts the soultion of this....
    Does anyone have idea reply me....
    Regards,
    Anitha

    Hi Anitha,
    For the delete option, you need to right a small function if its going to be ur own form.
    Try using the following code...
    Private Sub DeleteRow()
            Dim oDBDSource As SAPbouiCOM.DBDataSource
            Dim Count As Integer
            Dim oMatrix As SAPbouiCOM.Matrix
            Try
                oDBDSource = objForm.DataSources.DBDataSources.Item("@TableName")
                oMatrix = objForm.Items.Item("3").Specific
                oMatrix.FlushToDataSource()
                oMatrix.DeleteRow(strRow)          
                objForm.Update()
                'objForm.DataSources.DBDataSources.Item("@TableName").RemoveRecord(strRow - 1)
                oDBDSource.Clear()
                oMatrix.FlushToDataSource()
                oMatrix.LoadFromDataSource()
                For Count = 1 To oDBDSource.Size - 1
                    oDBDSource.SetValue("Code", Count - 1, Count)
                Next        
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub
    Hope this helps.
    Satish.

  • Problem in deleting rows

    Hi experts,
    in the following method. I am deleting the records from the BAPI output table where the date and month do not correspond to todays date and current month.
    When I execute the BAPI for one employee it gives me the correct output. ie one record. But when I execute it for all the employees and when I use the following code. It gives me a blank output.
      public void wdDoInit()
        //@@begin wdDoInit()
        int date_today, current_date;
        int month_today, current_month;
        char date_satisfied, month_satisfied;
        Date date = new Date(System.currentTimeMillis());
        date_today = date.getDate();
        month_today = date.getMonth();
         int n = wdContext.nodeBirhtday_List().nodeItab().size();
         int leadSelected = wdContext.nodeBirhtday_List().nodeItab().getLeadSelection();
         //     loop backwards to avoid index troubles
         for (int i = n - 1; i >= 0; --i) {
              current_date  = wdContext.nodeBirhtday_List().nodeItab().currentItabElement().getGbdat().getDate();
              current_month = wdContext.nodeBirhtday_List().nodeItab().currentItabElement().getGbdat().getMonth();
              if (( current_date != date_today ) && ( current_month != month_today ))
                   wdContext.nodeBirhtday_List().nodeItab().removeElement(wdContext.nodeBirhtday_List().nodeItab().
                                  getElementAt(i));
        //@@end
    can anybody please suggest me the solution
    Regards
    Abdullah

    Hi Abhijeet,
    I tried it the way you said using
         wdContext.nodeBirhtday_List().nodeItab().moveFirst();
         //     loop backwards to avoid index troubles
         for (int i = n - 1; i >= 0; --i)
              current_date  = wdContext.nodeBirhtday_List().nodeItab().currentItabElement().getGbdat().getDate();
              current_month = wdContext.nodeBirhtday_List().nodeItab().currentItabElement().getGbdat().getMonth();
              if (( current_date != date_today ) && ( current_month != month_today ))
                   wdContext.nodeBirhtday_List().nodeItab().removeElement(wdContext.nodeBirhtday_List().nodeItab().
                                  getElementAt(i));                
              wdContext.nodeBirhtday_List().nodeItab().moveNext();     
    It adds records...
    According to Valerys Solution, the IPrivate<CustomController> doesnt show me the required nodes. and gives me 'Unable to resolve' error.
    Can you please suggest where I am going wrong
    Regards
    Abdullah

  • Problem with UIX Pages in sub folders

    I want to group my UIX pages into sub folders to maked definition of security constraints more convenient.
    The New UIX Page wizard doesn't allow creation into a sub folder so I have created a blank page and then renamed it into a subfolder using File>>Rename menu option. However, now when I drag Data Control bindings onto the page they fail to bind properly. (No data appears when I run the page.)
    Is there a fundamental problem with placing UIX pages into sub folders? Is it something I shouldn't do? Requiring a flat file structure seems an onerous restriction!
    Thanks
    Matthew

    yes. this is a known problem when you are running UIX pages and not struts dataactions.
    For the model bindings to work, you currently have to keep
    all your uix pages in the top level directory.
    However, if you use the struts-pageflow with UIX pages, then you can keep you UIX pages where ever you want.

  • Refreshing an UIX page

    Does anybody know how to explicitly for an refresh on a UIX page.
    The problem that I have now is that only after I some where did a rollback, the page is displayed correctly.
    Before the rollback, the page shows one table updated and one table still in the former state, which was before I added an extra row.
    Thanks in advance,
    Gideon

    So again I want to bring this to your attention, because I believe I am not the only one with this problem.
    I have a UIX page with two tables. I created the funtionality to add a row from table2 to table1.
    The problem is that after I did a Commit and the row has been added to table1 and removed from table2, only table1 is updated and table2 is still in the former state.
    At least it is in the former state on the screen.
    In the database the change has already been made.
    Only after I did a "rollback" somewhere, will the UIX page display correctly.
    Does anybody know how to solve this problem and do a proper refresh of the tables in UIX?
    Any help appreciated,
    Gideon

  • Javascript Error with UIX Page

    Hi all,
    I am using JHeadstart 10.1.2.2.32 with JDeveloper 10.1.2.1.0 to develop UIX pages. I have run into the following problem with one of my UIX pages. We have a page with a table view which uses sortable headers. In certain situations when using the sortable headers in IE 6.0.2900.2180, a javascript error appears. This does not occur using Firefox.
    It says:
    Line: 2894
    Char: 1
    Error: 'type' is null or not an object
    Code: 0
    URL: (the URL of the page)
    I have figured out that the error is occuring in the Common2_2_20.js file on the following line, which is part of the function _multivalidate:
    var a7 = a6.type; The error only occurs in the following situation. If the user has just logged into the system and certain rows in the table are read-only and others are editable. If you click on any of the sortable headers, it will sort fine the first time. However, if you click on the sortable header again, the javascript error appears. It only happens if you click on the sortable headers twice in a row.
    I have tried taking out the line of code, but then I can not sort the headers at all.
    I read in the forum that the error can occur because of the way IE handles the compression of javascript files. We changed the setting on the app server to not compress javascript files. I then undeployed and redeployed the application. However the same error is still occuring.
    If you need any more information, please let me know. Thanks in advance.
    Susan

    We found out that we had a custom script on the page that was interfering with script in the Common2_2_20.js. By moving the script to the end of our page, it solved our problem.
    Susan

  • How to delete row by row comparing to first collumn?

    Hello!
    I have a problem - I need to delete row by row , but the problem is, that I know that first COLUMN of any table is a PK.
    To retrieve COLUMN NAME I use:
    SELECT column_name, table_name FROM USER_TAB_COLUMNS WHERE column_id = 1 and table_name = c1.tmp_table_name;
    But this somehow doesn't work.
    Below you can see my script (not worked for now):
    declare
    xxx varchar2(100);
    begin
    for c1 in (select table_name, tmp_table_name from tmp_tables) loop
    EXECUTE IMMEDIATE
    ' SELECT column_name into '|| xxx ||' FROM USER_TAB_COLUMNS WHERE column_id = 1 and table_name = ' ||''''||c1.tmp_table_name||'''';
    execute immediate
    'begin
    for c2 in (select * from '|| c1.tmp_table_name || ') loop begin
    insert into '|| c1.table_name || ' values c2; delete from '|| c1.tmp_table_name || ' where ' || xxx ||' = c2.'||xxx ||'; exception when others then null; end; end loop; end;';
    end loop;
    end;
    P.S. Inserts work perfect. I have a problem with delete rows that are in c1.table_name, from c1.tmp_table_name (this two tables have the same structure, PK, always), because I have different column names in another tables tables that are PK. (for example: K, ID, NS and so on) please help me to write correct script.
    For example for first fetched row it will be like:
    begin
    for c1 in (select table_name, tmp_table_name from tmp_tables) loop
    execute immediate
    'begin for c2 in (select * from '|| c1.tmp_table_name || ') loop begin
    insert into '|| c1.table_name || ' values c2; delete from '|| c1.tmp_table_name ||' where K = c2.K; exception when others then null; end; end loop; end;';
    end loop;
    end;
    That script works perfect. But I have many others tables with different PK - not K.

    Solution with error-logging table
    -- create the error-logging table
    CREATE TABLE tbl_MergeErrors (
        Stamp       TIMESTAMP(3),
        TableName   VARCHAR2(30),
        KeyColumn   VARCHAR2(30),
        KeyValue    VARCHAR2(4000),
        ErrorCode   NUMBER(5),
        ErrorMsg    VARCHAR2(4000),
      CONSTRAINT pk_MergeErrors
          PRIMARY KEY (TableName, Stamp)
          USING INDEX
    -- procedure to insert errors
    CREATE OR REPLACE
    PROCEDURE LogMergeError (pTableName  IN VARCHAR2,
                             pKeyColumn  IN VARCHAR2,
                             pKeyValue   IN VARCHAR2)
    IS PRAGMA AUTONOMOUS_TRANSACTION;
        -- you couldn't insert SQLCODE or SQLERRM directly into a table (ORA-00984)
        nSQLCODE   NUMBER(5)      := SQLCODE;
        vcSQLERRM  VARCHAR2(4000) := SQLERRM;
    BEGIN
      INSERT INTO tbl_MergeErrors
             (Stamp, TableName, KeyColumn, KeyValue, ErrorCode, ErrorMsg)
          VALUES (SYSTIMESTAMP, RTrim( SubStr( pTableName, 1, 30)),
                  RTrim( SubStr( pKeyColumn, 1, 30)), SubStr( pKeyValue, 1, 4000),
                  nSQLCODE, vcSQLERRM);
      COMMIT WORK;
    -- if an error occured here, then just roll back the autonomous transaction
    EXCEPTION
      WHEN OTHERS THEN   ROLLBACK WORK;
    END LogMergeError;
    -- create the tables and insert test-data
    CREATE TABLE TMP_TABLES (
        TABLE_NAME       VARCHAR2(200),
        TMP_TABLE_NAME   VARCHAR2(200),
      CONSTRAINT TMP_TABLES_X PRIMARY KEY (TABLE_NAME)
    CREATE TABLE TMP_KL002 (
        K   VARCHAR2(40),
        N   VARCHAR2(200)
    CREATE TABLE TMP_TABLE1 (
        NS   VARCHAR2(40),
        N    VARCHAR2(200)
    CREATE TABLE KL002 (
        K VARCHAR2(40),
        N VARCHAR2(200),
      CONSTRAINT PK_KL002 PRIMARY KEY (K)
    CREATE TABLE TABLE1 (
        NS   VARCHAR2(40),
        N    VARCHAR2(200),
      CONSTRAINT PK_TABLE1 PRIMARY KEY (NS)
    INSERT INTO TMP_TABLES (TABLE_NAME, TMP_TABLE_NAME) VALUES ('kl002','tmp_kl002');
    INSERT INTO TMP_TABLES (TABLE_NAME, TMP_TABLE_NAME) VALUES ('table1','tmp_table1');
    INSERT INTO tmp_KL002 (K, N) VALUES ('00', 'none');
    INSERT INTO tmp_KL002 (K, N) VALUES ('07', 'exists');
    INSERT INTO tmp_KL002 (K, N) VALUES ('08', 'not assigned');
    INSERT INTO tmp_table1 (NS, N) VALUES ('2000', 'basic');
    INSERT INTO tmp_table1 (NS, N) VALUES ('3000', 'advanced');
    INSERT INTO tmp_table1 (NS, N) VALUES ('4000', 'custom');
    COMMIT WORK;
    -- to test, if it works correct when primary key values exists before
    INSERT INTO KL002 VALUES ('07', 'exists before');
    COMMIT WORK;
    -- check the data before execution
    SELECT * FROM TMP_KL002 ORDER BY K;
    SELECT * FROM KL002 ORDER BY K;
    SELECT * FROM TMP_TABLE1 ORDER BY NS;
    SELECT * FROM TABLE1 ORDER BY NS;
    -- empty the error-logging table
    TRUNCATE TABLE tbl_MergeErrors DROP STORAGE;
    -- a solution
    DECLARE
        PLSQL_BLOCK  CONSTANT VARCHAR2(256) := '
    BEGIN
      FOR rec IN (SELECT * FROM <0>) LOOP
        BEGIN
          INSERT INTO <1> VALUES rec;
          DELETE FROM <0> t WHERE (t.<2> = rec.<2>);
        EXCEPTION
          WHEN OTHERS THEN
              LogMergeError( ''<1>'', ''<2>'', rec.<2>);
        END;
      END LOOP;
    END;';
    BEGIN
      FOR tabcol IN (SELECT t.Tmp_Table_Name, t.Table_Name, c.Column_Name
                     FROM Tmp_Tables t,
                          User_Tab_Columns c
                     WHERE     (c.Table_Name = Upper( t.Tmp_Table_Name))
                           AND (c.Column_ID = 1)
                ) LOOP
        EXECUTE IMMEDIATE Replace( Replace( Replace( PLSQL_BLOCK,
                                   '<0>', tabcol.Tmp_Table_Name),
                                   '<1>', tabcol.Table_Name),
                                   '<2>', tabcol.Column_Name);
      END LOOP;
    END;
    -- check the data after execution ...
    SELECT * FROM TMP_KL002 ORDER BY K;
    SELECT * FROM KL002 ORDER BY K;
    SELECT * FROM TMP_TABLE1 ORDER BY NS;
    SELECT * FROM TABLE1 ORDER BY NS;
    -- ... and also the error-logging table
    SELECT * FROM tbl_MergeErrors ORDER BY Stamp, TableName;
    -- of couse you must issue an COMMIT (the ROLLBACK is only for testing
    ROLLBACK WORK;
    -- drop the test-tables
    DROP TABLE TABLE1 PURGE;
    DROP TABLE KL002 PURGE;
    DROP TABLE TMP_TABLE1 PURGE;
    DROP TABLE TMP_KL002 PURGE;
    DROP TABLE TMP_TABLES PURGE;
    -- you shouldn't drop the error-logging table, but I use it to free up my db
    DROP TABLE tbl_MergeErrors PURGE;Greetings, Niels

  • Problem with multi row delete

    Hi, I'm new in apex and I tried to build master detail report on some view. Everything is cool but "delete checked" doesn't work.
    "ORA-20001: Error in multi row delete operation: row= , ORA-06502: PL/SQL: numeric or value error: NULL index table key value,"
    the problem is that I don't know what is wrong :), I have a special trigger "instead of delete on MY_VIEW", but in this error problem is not explained.
    Anybody knows what can be wrong? It is probably a problem with trigger or multi row doesn't work with views? I couldn't find how MRD knows what kind of statement use to delete rows so I don't know if the statement that program used is correct. In debug it lokks that:
    0.32: ...Do not run process "ApplyMRU", process point=AFTER_SUBMIT, condition type=REQUEST_IN_CONDITION, when button pressed=
    0.32: ...Process "ApplyMRD": MULTI_ROW_DELETE (AFTER_SUBMIT) #OWNER#:MY_VIEW:ITEM1:ITEM2
    0.33: Show ERROR page...
    0.33: Performing rollback...
    thanks for any help
    //sorry for english mistakes
    edit: it doesn't matter if I use in trigger delete from ... where item1=:OLD.item1 ; or if I use item1=:P4_item1 (which actually saves correct values)
    Edited by: user5931224 on 2009-06-13 08:55

    I realised that this is not a problem with trigger, I changed trigger to "NULL;" and problem is the same. Maybe sb used master detail on view not only on tables and know what can be wrong in this situation?

  • Problem in deleting a row

    hi,
    I have a table with set of values.  added three buttons below that in table. add row, delete row, save.
    if I delete the row and save and if i come again to that application still that deleted row remains. what might be the problem?

    you can use flag in your internal table,
    when you press delete button after selecting the particular row, set the flag for this entry in itab.
    now in save event loop through the table checking flag, and delete enteries. now bind the table again by the itab.
    you can do the same thing in delete button event also,
    if not solved, please explain more
    Yogesh N

  • Problem of deletion of rows in jtable, table refreshing too

    Hi,
    I have a table with empty rows in the beginning with some custom properties( columns have fixed width...), later user would be adding to the rows to this table and can delete, I've a problem while deleting the rows from table,
    When a selected row is deleted the model is also deleting the data but the table(view) is not refreshed.
    Actually i'm selecting a cell of a row, then hitting the delete button.
    So the model is deleting the information, but i'm not able to c the fresh data in table( especially when the last cell of last row is selectd and hit the delete button, i am getting lots of exception)
    Kindly copy the below code and execute it, and let me know,
    * AuditPanel.java
    * Created on August 30, 2002, 3:05 AM
    import javax.swing.*;
    import java.awt.*;
    import javax.swing.table.*;
    import java.awt.event.*;
    import javax.swing.event.*;
    import java.util.Vector;
    * @author yaman
    public class AuditPanel extends javax.swing.JPanel {
    // These are the combobox values
    private String[] acceptenceOptions;
    private Vector colNames;
    private Color rowSelectionBackground = Color.yellow;
    private int rowHeight = 20;
    private int column0Width =70;
    private int column1Width =96;
    private int column2Width =327;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    /** Creates new form AuditPanel */
    public AuditPanel() {
    public void renderPanel(){
    initComponents();
    public String[] getAcceptenceOptions(){
    return acceptenceOptions;
    public void setAcceptenceOptions(String[] acceptenceOptions){
    this.acceptenceOptions = acceptenceOptions;
    public Vector getColumnNames(){
    return colNames;
    public void setColumnNames(Vector colNames){
    this.colNames = colNames;
    public Vector getData(){
    Vector dataVector = new Vector();
    /*dataVector.add(null);
    dataVector.add(null);
    dataVector.add(null);
    return dataVector;
    /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    private void initComponents() {
    java.awt.GridBagConstraints gridBagConstraints;
    jPanel2 = new javax.swing.JPanel();
    jButton1 = new javax.swing.JButton();
    jButton2 = new javax.swing.JButton();
    jPanel1 = new javax.swing.JPanel();
    jTable1 = new javax.swing.JTable();
    setLayout(new java.awt.GridBagLayout());
    setBorder(new javax.swing.border.EmptyBorder(0,0,0,0));
    jPanel2.setLayout(new java.awt.GridBagLayout());
    jPanel2.setBorder(new javax.swing.border.EmptyBorder(0,0,0,0));
    jButton1.setText("Add");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
    gridBagConstraints.ipadx = 8;
    gridBagConstraints.insets = new java.awt.Insets(0, 1, 5, 0);
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    jPanel2.add(jButton1, gridBagConstraints);
    jButton2.setText("Delete");
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 1;
    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
    jPanel2.add(jButton2, gridBagConstraints);
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 2;
    gridBagConstraints.gridy = 0;
    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0);
    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
    add(jPanel2, gridBagConstraints);
    jPanel1.setLayout(new java.awt.GridBagLayout());
    jPanel1.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED, Color.black, Color.gray) );
    jTable1.setModel(new javax.swing.table.DefaultTableModel(getData(), getColumnNames()));
    // get all the columns and set the column required properties
    java.util.Enumeration enum = jTable1.getColumnModel().getColumns();
    while (enum.hasMoreElements()) {
    TableColumn column = (TableColumn)enum.nextElement();
    if( column.getModelIndex() == 0 ) {
    column.setPreferredWidth(column0Width);
    column.setCellEditor( new ValidateCellDataEditor(true) );
    if( column.getModelIndex() == 1) {
    column.setPreferredWidth(column1Width);
    column.setCellEditor(new AcceptenceComboBoxEditor(getAcceptenceOptions()));
    // If the cell should appear like a combobox in its
    // non-editing state, also set the combobox renderer
    //column.setCellRenderer(new AcceptenceComboBoxRenderer(getAcceptenceOptions()));
    if( column.getModelIndex() == 2 ) {
    column.setPreferredWidth(column2Width); // width of column
    column.setCellEditor( new ValidateCellDataEditor(false) );
    jScrollPane1 = new javax.swing.JScrollPane(jTable1);
    jScrollPane1.setPreferredSize(new java.awt.Dimension(480, 280));
    jTable1.setMinimumSize(new java.awt.Dimension(60, 70));
    //jTable1.setPreferredSize(new java.awt.Dimension(300, 70));
    //jScrollPane1.setViewportView(jTable1);
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
    jPanel1.add(jScrollPane1, gridBagConstraints);
    gridBagConstraints = new java.awt.GridBagConstraints();
    gridBagConstraints.gridx = 0;
    gridBagConstraints.gridy = 0;
    add(jPanel1, gridBagConstraints);
    // set the row height
    jTable1.setRowHeight(rowHeight);
    // set selection color
    jTable1.setSelectionBackground(rowSelectionBackground);
    // set the single selection
    jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    // avoid table header to resize/ rearrange
    jTable1.getTableHeader().setReorderingAllowed(false);
    jTable1.getTableHeader().setResizingAllowed(false);
    // Table header font
    jTable1.getTableHeader().setFont( new Font( jTable1.getFont().getName(),Font.BOLD,jTable1.getFont().getSize() ) );
    jButton1.setMnemonic(KeyEvent.VK_A);
    // action of add button
    jButton1.addActionListener( new ActionListener(){
    public void actionPerformed(ActionEvent actionEvent){
    // If a button press is the trigger to leave a JTable cell and save the data in model
    if(jTable1.isEditing() ){
    //System.out.println("table is edition ");
    String text=((javax.swing.text.JTextComponent)jTable1.getEditorComponent()).getText();
    jTable1.setValueAt(text,jTable1.getSelectedRow(),jTable1.getSelectedColumn()) ;
    jTable1.getCellEditor().cancelCellEditing();
    // find out total available rows
    int totalRows = jTable1.getRowCount();
    int cols = jTable1.getModel().getColumnCount();
    if( jTable1.getModel() instanceof DefaultTableModel ) {
    ((DefaultTableModel)jTable1.getModel()).addRow(new Object[cols]);
    int newRowCount = jTable1.getRowCount();
    // select the first row
    jTable1.getSelectionModel().setSelectionInterval(newRowCount-1,newRowCount-1);
    jButton2.setMnemonic(KeyEvent.VK_D);
    // action of Delete button
    jButton2.addActionListener( new ActionListener(){
    public void actionPerformed(ActionEvent actionEvent){
    int totalRows = jTable1.getRowCount();
    // If there are more than one row in table then delete it
    if( totalRows > 0){
    int selectedOption = JOptionPane.showConfirmDialog(null,"Are you sure you want to delete this audit row?","Coeus", JOptionPane.YES_NO_OPTION);
    // if Yes then selectedOption is 0
    // if No then selectedOption is 1
    if(0 == selectedOption ){
    // get the selected row
    int selectedRow = jTable1.getSelectedRow();
    System.out.println("Selected Row "+selectedRow);
    if( selectedRow != -1 ){
    DefaultTableModel dm= (DefaultTableModel)jTable1.getModel();
    java.util.Vector v1=dm.getDataVector();
    System.out.println("BEFOE "+v1);
    v1.remove(selectedRow);
    jTable1.removeRowSelectionInterval(selectedRow,selectedRow);
    System.out.println("After "+v1);
    }else{
    // show the error message
    JOptionPane.showMessageDialog(null, "Please Select an audit Row", "Coeus", JOptionPane.ERROR_MESSAGE);
    } // end of initcomponents
    class AcceptenceComboBoxRenderer extends JComboBox implements TableCellRenderer {
    public AcceptenceComboBoxRenderer(String[] items) {
    super(items);
    public Component getTableCellRendererComponent(JTable table, Object value,
    boolean isSelected, boolean hasFocus, int row, int column) {
    if (isSelected) {
    setForeground(table.getSelectionForeground());
    super.setBackground(rowSelectionBackground);
    } else {
    setForeground(table.getForeground());
    setBackground(table.getBackground());
    // Select the current value
    setSelectedItem(value);
    return this;
    class AcceptenceComboBoxEditor extends DefaultCellEditor {
    public AcceptenceComboBoxEditor(String[] items) {
    super(new JComboBox(items));
    } // end editor class
    public class ValidateCellDataEditor extends AbstractCellEditor implements TableCellEditor {
    // This is the component that will handle the editing of the
    // cell value
    JComponent component = new JTextField();
    boolean validate;
    public ValidateCellDataEditor(boolean validate){
    this.validate = validate;
    // This method is called when a cell value is edited by the user.
    public Component getTableCellEditorComponent(JTable table, Object value,
    boolean isSelected, int rowIndex, int vColIndex) {
    if (isSelected) {
    component.setBackground(rowSelectionBackground);
    // Configure the component with the specified value
    JTextField tfield =(JTextField)component;
    // if any vaidations to be done for this cell
    if(validate){
    //tfield.setDocument(new JTextFieldFilter(JTextFieldFilter.NUMERIC,4));
    tfield.setText( ((String)value));
    // Return the configured component
    return component;
    // This method is called when editing is completed.
    // It must return the new value to be stored in the cell.
    public Object getCellEditorValue() {
    return ((JTextField)component).getText();
    // This method is called just before the cell value
    // is saved. If the value is not valid, false should be returned.
    public boolean stopCellEditing() {
    String s = (String)getCellEditorValue();
    return super.stopCellEditing();
    public void itemStateChanged(ItemEvent e) {
    super.fireEditingStopped();
    }//end of ValidateCellDataEditor class
    public static void main(String args[]){
    JFrame frame = new JFrame();
    AuditPanel auditPanel = new AuditPanel();
    frame.getContentPane().add(auditPanel);
    auditPanel.setAcceptenceOptions(new String[]{"Accepted", "Rejected", "Requested"} );
    java.util.Vector colVector = new java.util.Vector();
    colVector.add("Fiscal Year");
    colVector.add("Audit Accepted");
    colVector.add("Comment" );
    auditPanel.setColumnNames( colVector);
    auditPanel.renderPanel();
    frame.pack();
    frame.show();

    Hi,
    I've got the solution for it. As when the cursor is in cell of
    a row and hit the delete button, the data in that cell is not saved,
    So i'm trying to save the data first into the model then firing the action event by doing this ..
    jButton2.addActionListener( new ActionListener(){       
    public void actionPerformed(ActionEvent actionEvent){           
    // If a button press is the trigger to leave a JTable cell and save the data in model
    if(jTable1.isEditing() ){                   
    String text=((javax.swing.text.JTextComponent)jTable1.getEditorComponent()).getText();
    jTable1.setValueAt(text,jTable1.getSelectedRow(),jTable1.getSelectedColumn()) ;
    jTable1.getCellEditor().cancelCellEditing();
    // HERE DO THE DELETE ROW OPERATION
    <yaman/>

Maybe you are looking for