Add Button in Table.....
Hi Guys,
My requirement is: In a table control, 2 fields are coming from one node and third field is button. If i'm clicking on this button, the relevant field values are coming from the another database table (Here it may be more than 1). Can anyone has any idea about it? Is it possible to display all these fields in same table control which actually fatches data from 2 database tables?
Thanks,
Ravin Joshi
hi joshi,
first get the index of the row where the button is clicked.
don't for get to create action for the button.
write following code in the action:
data: elem_week_data TYPE REF TO if_wd_context_element.
w_index type i.
elem_week_data = wdevent->get_context_element( 'CONTEXT_ELEMENT' ).
w_index = elem_week_data->get_index( ).
Then get the data of two fields and bind it to the node.
Regards,
janakiram.
Similar Messages
-
How to add button to Table View and initiate action?
hello,
i'm new to Javafx 2, i recently followed the tutorial on tableview and would like to add a deletion action on particular row. What i had in mind was to add a delete button on the last column of each row, when clicked it will fire a handler and remove that row from the data observablelist. how do i do that?
please advice,
wesleyHi,
Please find the below code. I am creating a table view with two columns. The second column consists of delete button.
TableVeiw table = new TableView();
/*First column*/
final TableColumn<String> titleCol = new TableColumn<String>("Title");
titleCol.setProperty("title");
/*Second column*/
TableColumn<String> actionCol = new TableColumn<String>("Action");
actionCol.setCellFactory(new Callback<TableColumn<String>, TableCell<String>>() {
@Override
public TableCell<String> call(TableColumn<String> param) {
final TableCell<String> cell = new TableCell<String>() {
@Override
public void updateItem(String value, boolean empty) {
super.updateItem(value, empty);
final VBox vbox = new VBox(5);
Image image = new Image(getClass().getResourceAsStream("/images/delete.png"));
Button button = new Button("", new ImageView(image));
button.getStyleClass().add("deleteButton");
final TableCell<String> c = this;
button.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
TableRow tableRow = c.getTableRow();
Item item= (Item) tableRow.getTableView().getItems().get(tableRow.getIndex());
/* TODO : Delete this item from your data list and refresh the table */
vbox.getChildren().add(button);
setGraphic(vbox);
cell.setAlignment(Pos.TOP_RIGHT);
return cell;
grid.addColumns(titleCol,actionCol);I hope this can help you. :)
Edited by: Sai Pradeep Dandem on Aug 18, 2011 10:04 PM -
Add data to the table in the database with the use of add button
The name of my database is Socrates.
The name of the table in the database is Employees
I want to be able to add data to the database. i am presently working on the add button such that when i enter date into the textfield and press the add button it should automatically register in the table.
The error upon compilation is with this line of code
If (ae.getSource() == jbtnA)// it says that ";" is expected
Below is the entire code
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Mainpage extends JFrame implements ActionListener
JTextField jFirstName = new JTextField(15);
JTextField jSurname = new JTextField(12);
JTextField jCity = new JTextField(10);
JTextField jCountry = new JTextField(12);
JTextField jSSN = new JTextField(8);
JLabel jFirstLab = new JLabel("First Name");
JLabel jSurnameLab = new JLabel("Surname");
JLabel jCityLab = new JLabel("City");
JLabel jCountryLab = new JLabel("Country");
JLabel jSSNLab = new JLabel("Social Security Number (SSN)");
JButton jbtnA = new JButton ("Add");
JButton jbtnPrv = new JButton ("Previous");
JButton jbtnNt = new JButton ("Next");
JButton jbtnDl= new JButton ("Delete");
JButton jbtnSrch = new JButton ("Search");
public Mainpage (String title)
super (title);
Container cont = getContentPane();
JPanel pane1 = new JPanel();
JPanel pane2 = new JPanel();
JPanel pane3 = new JPanel();
pane1.setLayout (new GridLayout (0,1));
pane2.setLayout (new GridLayout(0,1));
pane3.setLayout (new FlowLayout());
pane1.add(jFirstLab);
pane1.add(jSurnameLab);
pane1.add(jCityLab);
pane1.add(jCountryLab);
pane1.add(jSSNLab);
pane2.add(jFirstName);
pane2.add(jSurname);
pane2.add(jCity);
pane2.add(jCountry);
pane2.add(jSSN);
pane3.add(jbtnA);
pane3.add(jbtnPrv);
pane3.add(jbtnNt);
pane3.add(jbtnDl);
pane3.add(jbtnSrch);
cont.add(pane1, BorderLayout.CENTER);
cont.add(pane2, BorderLayout.LINE_END);
cont.add(pane3, BorderLayout.SOUTH);
jFirstName.addActionListener(this);
jSurname.addActionListener(this);
jCity.addActionListener(this);
jCountry.addActionListener(this);
jSSN.addActionListener(this);
jbtnA.addActionListener(this);
jbtnPrv.addActionListener(this);
jbtnNt.addActionListener(this);
jbtnDl.addActionListener(this);
jbtnSrch.addActionListener(this);
validate();
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setResizable(false);
public void actionPerformed(ActionEvent ae)
If (ae.getSource() == jbtnA)
fst = jFirstName.getText();
srn = jSurname.getText();
cty = jCity.getText();
cnty = jCountry.getText();
int sn =
Interger.parseInt(jSSN.getText());
String ad = "Insert into Employees
(Firstname,Surname,City,Country,SSN)" +
"values('"fst"','"srn"','"cty"','"cnty"','"sn"')";
Statement stmt = con.createStatment();
int rowcount = stmt.executeUpdate(ad);
JOptionPane.showMessageDialog("Your
details have been registered");
Statement stmt = con.createStatment();
int rowcount = stmt.executeUpdate(ad);
public static void main (String args[])
Mainpage ObjFr = new Mainpage("Please fill this
registration form");
try
Class.forname("sun.jdbc.odbc.JdbcOdbcDriver");
String plato = "jdbc:odbc:socrates";
Connection con =
DriverManager.getConnection(plato);
catch(SQLException ce)
System.out.println(ce);
}i have restructured the code, but the following line of code is giving error:
String plato = jdbc:odbc:socrates;
the entire code is below:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
public class Mainpage extends JFrame implements ActionListener
JTextField jFirstName = new JTextField(15);
JTextField jSurname = new JTextField(12);
JTextField jCity = new JTextField(10);
JTextField jCountry = new JTextField(12);
JTextField jSSN = new JTextField(8);
JLabel jFirstLab = new JLabel("First Name");
JLabel jSurnameLab = new JLabel("Surname");
JLabel jCityLab = new JLabel("City");
JLabel jCountryLab = new JLabel("Country");
JLabel jSSNLab = new JLabel("Social Security Number (SSN)");
JButton jbtnA = new JButton ("Add");
JButton jbtnPrv = new JButton ("Previous");
JButton jbtnNt = new JButton ("Next");
JButton jbtnDl= new JButton ("Delete");
JButton jbtnSrch = new JButton ("Search");
Statement stmt;
String ad;
public Mainpage (String title)
super (title);
Container cont = getContentPane();
JPanel pane1 = new JPanel();
JPanel pane2 = new JPanel();
JPanel pane3 = new JPanel();
pane1.setLayout (new GridLayout (0,1));
pane2.setLayout (new GridLayout(0,1));
pane3.setLayout (new FlowLayout());
pane1.add(jFirstLab);
pane1.add(jSurnameLab);
pane1.add(jCityLab);
pane1.add(jCountryLab);
pane1.add(jSSNLab);
pane2.add(jFirstName);
pane2.add(jSurname);
pane2.add(jCity);
pane2.add(jCountry);
pane2.add(jSSN);
pane3.add(jbtnA);
pane3.add(jbtnPrv);
pane3.add(jbtnNt);
pane3.add(jbtnDl);
pane3.add(jbtnSrch);
cont.add(pane1, BorderLayout.CENTER);
cont.add(pane2, BorderLayout.LINE_END);
cont.add(pane3, BorderLayout.SOUTH);
jFirstName.addActionListener(this);
jSurname.addActionListener(this);
jCity.addActionListener(this);
jCountry.addActionListener(this);
jSSN.addActionListener(this);
jbtnA.addActionListener(this);
jbtnPrv.addActionListener(this);
jbtnNt.addActionListener(this);
jbtnDl.addActionListener(this);
jbtnSrch.addActionListener(this);
validate();
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setResizable(false);
try
Class.forname(sun.jdbc.odbc.JdbcOdbcDriver);
String plato = jdbc:odbc:socrates;
Connection con = DriverManager.getConnection(plato);
stmt = con.createStatment();
catch(SQLException ce)
System.out.println(ce);
catch(ClassNotFoundException ce)
System.out.println(ce);
public void actionPerformed(ActionEvent ae)
try
if(ae.getSource().equals(jbtnA))
fst = jFirstName.getText();
srn = jSurname.getText();
cty = jCity.getText();
cnty = jCountry.getText();
int sn = Interger.parseInt(jSSN.getText());
ad = "Insert into Employees
values('"+fst+"',"+srn+"','"+cty+"','"+cnty+"','"+sn+"')";
stmt.executeUpdate(ad);
JOptionPane.showMessageDialog(this, "Your details have been
registered");
catch(SQLException ce)
System.out.println(ce);
public static void main(String args[])
Mainpage ObjFr = new Mainpage("Please fill this registration form");
} -
Javascript code to enable an ADD button to create duplicate tables and pages for multiple entries
I am using Adobe XI Pro. I have created a multi-page fillable pdf questionnaire that I want to make interactive to the user. Within each page, I have multiple tables that can have ADD buttons to duplicate the table if the client wants more than one test. I would like this table to insert directly below the previous table and they may be able to add upto 5 of these table.
I also have a couple pages in the questionnaire that require duplication for multiple samples. Eg. One page per sample, and I may have upto 10 samples. I would like the javascript to have an ADD button and then add each page behind the previous related sheet (Original and duplicates together)
I am not a javascript coder so I would need some examples and a walk through. I did take some developer courses in engineering but it has been almost two decades
I have search on several forums and cannot find a good resource so I appreciate the help.
Sincerely
TaraSome of what you want to do can be done using template features and a bit of JavaScript, but if your users will be using Reader, version 11 will be required. You can dynamically add new pages, but adding new tables to existing pages with reflow of content that comes after is not possible with a form created in Acrobat. If you have access to Adobe's LiveCycle Designer form creation software, you can create what's known as a dynamic XFA form that can do all of what you want. You can ask in the LiveCycle Designer forum for more information: http://forums.adobe.com/community/livecycle/livecycle_modules_and_development_tools/livecy cle_designer_es?view=discussions
-
Document Add button - change a UDF so B1 writes value to tables
When the user presses the add button on a document, like an invoice, I want to loop through the items matrix and update a UDF on each row, so that Business one will write my values in the UDFs to the line item table (INV1), but I can't figure out how.
2 problems: The first is all the message boxes that B1 sometimes displays (like document total is zero, or error messages like 'no tax code entered'. I need to do my work AFTER these all occur, but just BEFORE the document is created. WHEN do I do this?
The other problem is that it seems like when I've tried something like this before, My changes to anything on the screen cause B1 to re-fire the events and then cancel the Add.
I don't want users to change these fields after I've loaded them, and I'd rather not retrieve the document after it's added and then change the values. I've found similar problems in the forum but none of them speaks exactly to this
Any ideas?
Thanks/Gracias/Dankeschoen/Merci/Danyavad/Toa chieHi John,
Hope you're doing well.
I suggest the formdataevent.
There is a example in the sdk.
This is what I use:
Public Sub FormDataEvent(ByRef BusinessObjectInfo As SAPbouiCOM.BusinessObjectInfo, ByRef BubbleEvent As Boolean) Handles UIAPP.FormDataEvent
'Occurs when the application performs the following actions on forms connected to business objects:
' Add()
' Update()
' Delete()
'Load form data via browse, link button, or find
'The event provides the unique ID (BusinessObjectInfo.ObjectKey) of the modified business object.
'You can use the value of this property as an input parameter in the DI API DataBrowser.GetByKeys method to get a DI object.
Dim form As SAPbouiCOM.Form = UIAPP.Forms.Item(BusinessObjectInfo.FormUID)
Dim bisObj As SAPbouiCOM.BusinessObject = form.BusinessObject
Dim uid As String = bisObj.Key
FormDataEventCommon.FormDataEventLogic(BusinessObjectInfo, BubbleEvent, bisObj, form)
System.Runtime.InteropServices.Marshal.ReleaseComObject(form)
System.Runtime.InteropServices.Marshal.ReleaseComObject(bisObj)
form = Nothing
bisObj = Nothing
GC.Collect()
End Sub
calls this function.
Public Function FormDataEventLogic(ByRef BusinessObjectInfo As SAPbouiCOM.BusinessObjectInfo, ByRef BubbleEvent As Boolean, ByRef bisobj As SAPbouiCOM.BusinessObject, ByRef form As SAPbouiCOM.Form) As Boolean
Dim Test As Integer = form.Mode
Dim mat As String = ""
Dim Fld As String = ""
Dim rep As String = ""
Dim ColFlag As Boolean = False
If BusinessObjectInfo.BeforeAction Then
Select Case BusinessObjectInfo.EventType
Case SAPbouiCOM.BoEventTypes.et_FORM_DATA_ADD
Select Case BusinessObjectInfo.Type
Case "COMMISSION OBJ UDO"
Dim CommTblClass As New CommAdj_Class(form.UniqueID)
Dim StrLN As String = CommTblClass.GetFieldValue(form.UniqueID, "EMONLN")
If StrLN = "" Then
CommTblClass.Displayerror("Please enter a load number")
BubbleEvent = False
End If
CommTblClass.release()
End Select
End Select
Else
Select Case BusinessObjectInfo.EventType
Case SAPbouiCOM.BoEventTypes.et_FORM_DATA_ADD
' Addnew information for a new document
Select Case BusinessObjectInfo.Type
Case SAPbobsCOM.BoObjectTypes.oDeliveryNotes
Case SAPbobsCOM.BoObjectTypes.oPurchaseDeliveryNotes
Case SAPbobsCOM.BoObjectTypes.oOrders
Case SAPbobsCOM.BoObjectTypes.oInvoices
Case SAPbobsCOM.BoObjectTypes.oCreditNotes
Case SAPbobsCOM.BoObjectTypes.oReturns
Case SAPbobsCOM.BoObjectTypes.oQuotations
Case SAPbobsCOM.BoObjectTypes.oPurchaseInvoices
Case SAPbobsCOM.BoObjectTypes.oInventoryGenEntry
Case "COMMISSION OBJ UDO"
End Select
Case SAPbouiCOM.BoEventTypes.et_FORM_DATA_UPDATE
' Update exisitng Document
Select Case BusinessObjectInfo.Type
Case SAPbobsCOM.BoObjectTypes.oDeliveryNotes
Case SAPbobsCOM.BoObjectTypes.oPurchaseDeliveryNotes
Case SAPbobsCOM.BoObjectTypes.oInvoices
Case SAPbobsCOM.BoObjectTypes.oCreditNotes
Case SAPbobsCOM.BoObjectTypes.oReturns
Case SAPbobsCOM.BoObjectTypes.oOrders
Case SAPbobsCOM.BoObjectTypes.oQuotations
Case SAPbobsCOM.BoObjectTypes.oInventoryGenEntry
Case "COMMISSION OBJ UDO"
End Select
Case BoEventTypes.et_FORM_DATA_LOAD
Select Case BusinessObjectInfo.Type
Case SAPbobsCOM.BoObjectTypes.oDeliveryNotes
Case SAPbobsCOM.BoObjectTypes.oPurchaseDeliveryNotes
Case SAPbobsCOM.BoObjectTypes.oInvoices
Case SAPbobsCOM.BoObjectTypes.oCreditNotes
Case SAPbobsCOM.BoObjectTypes.oReturns
Case SAPbobsCOM.BoObjectTypes.oOrders
Case SAPbobsCOM.BoObjectTypes.oQuotations
End Select
End Select
End If
Return True
End Function -
Urgent - How to add buttons to a Table
How to add buttons to a Table and enable them for Mouse Listeners/ Action Listeners
extends the defaultcellrenderer make it return a Jbutton as the component to draw.
class OverCellRendererClass extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
//put your stuff here to make or get a button
return myButton;
Use something like this to set the renderer for the column :
tb.getColumnModel().getColumn(4).setCellRenderer(new YourCellRendererClass()); -
Adobe reader closes automatically while table entry is added by add button
Hi Team,
I am new in adobe form. I have developed an adobe interactive form using livecycle designer integrated with SAP. My form has a table and under that there is an add button. When the form is opened in adobe reader and add button is clicked, I have written a javascript code which appends a new entry in the table above. Everything is fine upto here.
Now when I keep on clicking the add button, new entries are created and table grows. But when the table populates the current page and grows to populate the next page, suddenly the adobe form closes. I think there is an inconsistancy happening as my configuration for the table or the subform wrapping the table and the add button is conflicting.
Could you guys give me some advise on this. I can provide screenshots or the adobe document on request.
Thanks,
MainakHi,
I would say you are definitely coming up against memory restrictions. There are a couple of posts by John Brinkman that I would recommend.
First I would look at why the form is 6Mb and see if you can reduce this down. For example, select fonts that are already in Reader (like Myriad Pro) and then deselect Embed Fonts in the File > Form Properties > Save Options. Also do not embed images into the form. See:
http://blogs.adobe.com/formfeed/2010/02/big_and_complex_forms.html.
http://blogs.adobe.com/formfeed/2010/09/xdp-size-matters.html.
http://blogs.adobe.com/formfeed/2009/11/linked_vs_embedded_template_im.html.
Next look at your script. You mention loops, so check is your script efficient. For example, use xfa.resolveNodes() once outside of the loop, instead of xfa.resolveNode() inside the loop. Make sure that variables are declared. See:
http://blogs.adobe.com/formfeed/2011/10/script-performance-exercise.html.
http://assure.ly/kUP02y.
Also check for any script that you have in events that fire frequently, like layout:ready event and comment these out. See.
http://assure.ly/nB0Bvz.
The dataset seems very large at 2Mb. Does this include image data? It may be that the user is interacting with the form, while it is still trying to process the XML and the loops.
Hope that helps,
Niall -
Clicking add button to display the values
requrement is like this
Could anyone give suggestions with some code .
we have lovs using this one we are searching for the value(ex emloyee name) that value is returned to the base page filed like message text input . we have add button, when ever we click that button to display the value(ex employee name ,desigantion this is from another table )on that same page.I could not understand your requirement. Post more details of the requirement with specific details.
Message was edited by:
Srini -
Disable delete button in Table Maintainance Generator
Hello all,
How to disable delete button in Table maintainance generator???Hi Maya,
It is very interesting question. If you debug your table maintenance screen, the program of table maintenance screen will not have statically defined pf status. So you cannot exclude delete functionalities using the below statement.
SET PF-STATUS <the GUI status> EXCLUDING 'DELE'.
For viewing pf status SAP has programmed in dynamic manner using this FM VIEW_SET_PF_STATUS.
Before calling above FM you need to exclude delete function. Follow the following step for achieving this
Go to sm30. Put your table name and press on maintain push button. It will display table entries in maintenance screen.
Go to system->status
Click on program name.
Go to your flow logic of you table maintenance screen number.
It will have following code in flow logic
PROCESS BEFORE OUTPUT.
MODULE LISTE_INITIALISIEREN.
LOOP AT EXTRACT WITH CONTROL
TCTRL_ZMAINTAIN CURSOR NEXTLINE.
MODULE LISTE_SHOW_LISTE.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE LISTE_EXIT_COMMAND AT EXIT-COMMAND.
MODULE LISTE_BEFORE_LOOP.
LOOP AT EXTRACT.
MODULE LISTE_INIT_WORKAREA.
CHAIN.
FIELD ZMAINTAIN-MATNR .
FIELD ZMAINTAIN-KUNNR .
FIELD ZMAINTAIN-LIFNR .
MODULE SET_UPDATE_FLAG ON CHAIN-REQUEST.
ENDCHAIN.
FIELD VIM_MARKED MODULE LISTE_MARK_CHECKBOX.
CHAIN.
FIELD ZMAINTAIN-MATNR .
MODULE LISTE_UPDATE_LISTE.
ENDCHAIN.
ENDLOOP.
MODULE LISTE_AFTER_LOOP.
Add new module in PBO for excluding delete function. ex module set_pf.
PROCESS BEFORE OUTPUT.
****here I added my own code for excluding delete function
****begin of addion
module set_pf.
****end of addition
MODULE LISTE_INITIALISIEREN.
LOOP AT EXTRACT WITH CONTROL
TCTRL_ZMAINTAIN CURSOR NEXTLINE.
MODULE LISTE_SHOW_LISTE.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE LISTE_EXIT_COMMAND AT EXIT-COMMAND.
MODULE LISTE_BEFORE_LOOP.
LOOP AT EXTRACT.
MODULE LISTE_INIT_WORKAREA.
CHAIN.
FIELD ZMAINTAIN-MATNR .
FIELD ZMAINTAIN-KUNNR .
FIELD ZMAINTAIN-LIFNR .
MODULE SET_UPDATE_FLAG ON CHAIN-REQUEST.
ENDCHAIN.
FIELD VIM_MARKED MODULE LISTE_MARK_CHECKBOX.
CHAIN.
FIELD ZMAINTAIN-MATNR .
MODULE LISTE_UPDATE_LISTE.
ENDCHAIN.
ENDLOOP.
MODULE LISTE_AFTER_LOOP.
*****inclule one line of code for excluding delete fucion
module set_pf output.
MOVE 'DELE' TO excl_cua_funct-function. COLLECT excl_cua_funct.
endmodule.
Basically sap fetching status dynamically from program SAPLSVIM using FM VIEW_SET_PF_STATUS. Status name is EULG.
Please donu2019t hardcode anything by using set pf status statment, you just add one line of code the PBO by creating new module.
Let me know if you need any help .
Cheers.
Regards,
Peranandam -
Add button to unused space in JTableHeader
I have modified my JTable so that I can have multiple rows of column headers. I did this by extending BasicTableHeaderUI. In my particular instance, the first column of the table will never have more than one row in the header (unlike other implementations of multi-row headers I have seen, my column headers don't automatically fill upwards to take up all usable space in the header). So, I have "unused" space in the header above the first column.
I would like to put some buttons there that are relevant to the table, but so far every effort to do so has failed.
In the SSCCE below I have created a very stripped down version of my TableHeaderUI. It doesn't contain any of the code to create multiple row headers, it just pushes down the standard column headers to create some space. I try adding a button to the rendererPane, but it doesn't show up. There is a commented out line that paints the button which does work in terms of showing the button, but that's probably not the right way to do this (and the button doesn't work anyway).
So, why isn't the button showing up? Am I doing this the right way (i.e. adding the button within the UI)? Thanks in advance for you help.
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Enumeration;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.plaf.basic.BasicTableHeaderUI;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
public class HeaderButtonTable extends JPanel {
public HeaderButtonTable() {
String[] colNames = {"column 1", "column2", "column3"};
Object[][] data = {{"a","b","c"},{"d","e","f"}};
JTable table = new JTable(data, colNames);
table.setPreferredScrollableViewportSize(new Dimension(400,100));
table.setFillsViewportHeight(true);
table.getTableHeader().setUI(new ButtonHeaderUI());
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
public class ButtonHeaderUI extends BasicTableHeaderUI {
public void paint(Graphics g, JComponent c) {
Rectangle clip = g.getClipBounds();
Point left = clip.getLocation();
Point right = new Point( clip.x + clip.width - 1, clip.y );
TableColumnModel cm = header.getColumnModel();
int cMin = header.columnAtPoint(left);
int cMax = header.columnAtPoint(right);
if (cMin == -1) cMin = 0;
if (cMax == -1) cMax = cm.getColumnCount()-1;
TableColumn draggedColumn = header.getDraggedColumn();
int columnWidth;
Rectangle cellRect = header.getHeaderRect(cMin);
TableColumn aColumn;
for(int column = cMin; column <= cMax ; column++) {
aColumn = cm.getColumn(column);
columnWidth = aColumn.getWidth();
cellRect.width = columnWidth;
if (aColumn != draggedColumn) {
paintCell(g, cellRect, column);
cellRect.x += columnWidth;
JButton test = new JButton("test");
test.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
System.out.println("pressed");
test.setBounds(2, 2, 60, 15);
rendererPane.add(test); //why isn't this showing up?
//this line will display the button, but button doesn't work
// rendererPane.paintComponent(g, test, header, 2, 2, 60, 15);
private Component getHeaderRenderer(int columnIndex) {
TableColumn aColumn = header.getColumnModel().getColumn(columnIndex);
TableCellRenderer renderer = aColumn.getHeaderRenderer();
if (renderer == null) renderer = header.getDefaultRenderer();
return renderer.getTableCellRendererComponent(header.getTable(),
aColumn.getHeaderValue(), false, false, -1, columnIndex);
private void paintCell(Graphics g, Rectangle cellRect, int columnIndex) {
Component component = getHeaderRenderer(columnIndex);
rendererPane.paintComponent(g, component, header,
cellRect.x, cellRect.y + 30, cellRect.width,
cellRect.height - 30, true);
public Dimension getPreferredSize(JComponent c) {
long width = 0;
Enumeration enumeration = header.getColumnModel().getColumns();
while (enumeration.hasMoreElements()) {
TableColumn aColumn = (TableColumn)enumeration.nextElement();
width = width + aColumn.getPreferredWidth();
return new Dimension((int)width, 60);
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new HeaderButtonTable());
frame.pack();
frame.setVisible(true);
}Yes, I've seen similar links/posts about how to activate buttons in the header of a table, but those do it by adding listeners to the renderer. My buttons would be directly in the CellRendererPane that is the container for the table header. I would have thought that by putting the button directly in the Cell RendererPane that it would have nothing to do with the rest of the table header. CellRendererPane extends Container. Is it not possible to put a JButton in a Container? JFrame extends indirectly from Container and you can add buttons to that.
Edited by: Bob.B on Oct 28, 2009 10:57 PM -
Hi,
I have created an Interactive report on a table. I want to add two buttons in each row: Accept and Reject, so that i can change the status(db column) of the corresponding record on button action.
How can I do so?Hi poojaC,
Try the below code,
i am giving the idea to add buttons..may be this is not the way you want.
step1
-- put this code in report region
select "ROWID",
'<input type="button" value="Accept" onclick="func('||EMPNO||')">' as "Accept",
'<input type="button" value="Reject" onclick="func('||EMPNO||')">' as "Reject",
"EMPNO",
"ENAME",
"JOB",
"MGR",
"HIREDATE",
"SAL",
"COMM",
"DEPTNO"
from "#OWNER#"."EMP"
-- edit the Accept and reject column and change Display type to "standard report column"Step 2 : create one function in page header like
-- here you can execute your process on button action
<script>
function func(id)
alert(id);
</script>Hope this will give you some idea.
Regards,
Jitendra -
Add button inactive in Match record step in Import manager
Hello,
In the Main table, I want to see the country data as 'US; United States' in country field.
I have made both 'country code' and 'country description' as display fields in the country flat lookup table.
When I load country code and country description from import manager from an excel file, the 'Add' button in Match records step is inactive for both the fields.
How can I do the matching in import manager without sacrificing my requirement of showing country as 'US; United States' in main table ?
Thanks,answer to this question is already available in forum.
-
Can we add button in query region along with go and clear
Hi Friends,
i have a requirement as below steps-
1)i have developed search pgae by using query regiion
2) in pgae,first we have search items,go and clear(submit buttons), table region.
3)here go and clear buttons came automatically.
4) i can able to add button in front of the page and end of the page.
4) my requirement is i need to add one more button along with go and clear(here go and clear button are in between search items and table region) .
5)i am not able to add button along with go and clear.
Can any one know how to do this--
Thanks in Advance
vamshiHi Vamshi,
You can not create extra buttons in Standard Query region.
Alternatively you can create your custom region for the search and there you can add a button. If you don't need advanced region, you can create the custom region in place of standard one.
Anoop -
How to add button in reuse_alv not in gui status
hi guys,
my question how can i add button to reuse_alv not in gui_status or pf_status ? and also i have an internal table which contains a checkbox field when user select one or more check box and push button , new table will be sended to batch input program.how can i do add button part, the rest of it is done.?Hi,The following sample report ZUS_SDN_ALV_BUTTON_CLICK_LTXT shows a possible way how to handle the BUTTON_CLICK event in order to retrieve a longtext for a ALV entry. Please note that for the sake of simplicity I have choosen an obsolete function module for text editing (only enter numerical values otherwise the function module crashes).
*& Report ZUS_SDN_ALV_BUTTON_CLICK_LTXT
*& Screen '0100' contains no elements.
*& ok_code -> assigned to GD_OKCODE
*& Flow logic:
* PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
* PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
*& PURPOSE: Demonstrate event BUTTON_CLICK for entering long text
REPORT zus_sdn_alv_button_click_ltxt.
TYPE-POOLS: icon.
TYPES: BEGIN OF ty_s_outtab.
INCLUDE TYPE knb1.
TYPES: button TYPE iconname.
TYPES: line TYPE bapi_line.
TYPES: END OF ty_s_outtab.
TYPES: ty_t_outtab TYPE STANDARD TABLE OF ty_s_outtab
WITH DEFAULT KEY.
DATA:
gd_okcode TYPE ui_func,
gd_repid TYPE syst-repid,
go_docking TYPE REF TO cl_gui_docking_container,
go_grid TYPE REF TO cl_gui_alv_grid,
gt_fcat TYPE lvc_t_fcat,
gt_variant TYPE disvariant,
gs_layout TYPE lvc_s_layo.
DATA:
gs_outtab TYPE ty_s_outtab,
gt_outtab TYPE ty_t_outtab.
* CLASS lcl_eventhandler DEFINITION
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_button_click FOR EVENT button_click OF cl_gui_alv_grid
IMPORTING
es_col_id
es_row_no
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
* CLASS lcl_eventhandler IMPLEMENTATION
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_button_click.
* define local data
DATA:
ld_answer(1) TYPE c,
ls_outtab TYPE ty_s_outtab.
CHECK ( sender = go_grid ).
READ TABLE gt_outtab INTO ls_outtab INDEX es_row_no-row_id.
" Note: This function module is obsolete and crashes if
" non-numerical values are entered. Choose a more
" appropriate way of entering the longtext.
CALL FUNCTION 'POPUP_TO_GET_VALUE'
EXPORTING
fieldname = 'LINE'
tabname = 'BAPITGB'
titel = 'Enter Longtext'
valuein = ls_outtab-line
IMPORTING
answer = ld_answer
valueout = ls_outtab-line
EXCEPTIONS
fieldname_not_found = 1
OTHERS = 2.
IF sy-subrc 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF ( ld_answer NE 'C' ). " 'C' = cancel
MODIFY gt_outtab FROM ls_outtab INDEX es_row_no-row_id
TRANSPORTING line.
ENDIF.
* Triggers PAI of the dynpro with the specified ok-code
CALL METHOD cl_gui_cfw=>set_new_ok_code( 'REFRESH' ).
ENDMETHOD. "handle_button_click
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
START-OF-SELECTION.
SELECT * FROM knb1
INTO CORRESPONDING FIELDS OF TABLE gt_outtab
WHERE bukrs = '1000'.
CLEAR: gs_outtab.
gs_outtab-button = icon_change_text.
MODIFY gt_outtab FROM gs_outtab
TRANSPORTING button LINE
where ( bukrs NE space ). " modify all lines
PERFORM build_fieldcatalog.
* Create docking container
CREATE OBJECT go_docking
EXPORTING
parent = cl_gui_container=>screen0
ratio = 90
EXCEPTIONS
OTHERS = 6.
IF sy-subrc 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Create ALV grids
CREATE OBJECT go_grid
EXPORTING
i_parent = go_docking
EXCEPTIONS
OTHERS = 5.
IF sy-subrc 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Set event handler
SET HANDLER: lcl_eventhandler=>handle_button_click FOR go_grid.
* Display data
gs_layout-grid_title = 'Customers'.
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_layout = gs_layout
CHANGING
it_outtab = gt_outtab
it_fieldcatalog = gt_fcat
EXCEPTIONS
OTHERS = 4.
IF sy-subrc 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Link the docking container to the target dynpro
gd_repid = syst-repid.
CALL METHOD go_docking->link
EXPORTING
repid = gd_repid
dynnr = '0100'
* CONTAINER =
EXCEPTIONS
OTHERS = 4.
IF sy-subrc 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* NOTE: dynpro does not contain any elements
CALL SCREEN '0100'.
* Flow logic of dynpro (does not contain any dynpro elements):
*PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
*PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
END-OF-SELECTION.
*& Module STATUS_0100 OUTPUT
* text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'. " contains push button "DETAIL"
* SET TITLEBAR 'xxx'.
CALL METHOD go_grid->refresh_table_display
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
* EXCEPTIONS
* FINISHED = 1
* others = 2
IF sy-subrc 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE user_command_0100 INPUT.
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
* Refresh -> pass PAI and PBO where flushing occurs
WHEN 'REFRESH'.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form BUILD_FIELDCATALOG
* text
* --> p1 text
* <-- p2 text
FORM build_fieldcatalog .
* define local data
DATA:
ls_fcat TYPE lvc_s_fcat,
lt_fcat TYPE lvc_t_fcat.
REFRESH: gt_fcat.
CLEAR: lt_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'KNB1'
CHANGING
ct_fieldcat = lt_fcat
EXCEPTIONS
OTHERS = 99.
IF sy-subrc 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
APPEND LINES OF lt_fcat TO gt_fcat.
CLEAR: lt_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'BAPITGB'
CHANGING
ct_fieldcat = lt_fcat
EXCEPTIONS
OTHERS = 99.
IF sy-subrc 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE lt_fcat INTO ls_fcat
WITH KEY fieldname = 'LINE'.
IF ( syst-subrc = 0 ).
INSERT ls_fcat INTO gt_fcat INDEX 4.
ENDIF.
CLEAR: lt_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ICON'
CHANGING
ct_fieldcat = lt_fcat
EXCEPTIONS
OTHERS = 99.
IF sy-subrc 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE lt_fcat INTO ls_fcat
WITH KEY fieldname = 'NAME'.
IF ( syst-subrc = 0 ).
ls_fcat-fieldname = 'BUTTON'.
ls_fcat-style = cl_gui_alv_grid=>mc_style_button.
INSERT ls_fcat INTO gt_fcat INDEX 4.
ENDIF.
LOOP AT gt_fcat INTO ls_fcat.
ls_fcat-col_pos = syst-tabix.
MODIFY gt_fcat FROM ls_fcat INDEX syst-tabix.
ENDLOOP.
ENDFORM. " BUILD_FIELDCATALOG[/code]
Reward If Found Useful. -
Set Rendered on a 'Add' button to False has caused HTTP 400 error
Hi,
I am trying to personalise in Manager SS a custom version of seeded 'Documents of Record' function HR_DOR_SS to make the Add Record button non-display on the Documents of Record table. I changed Rendered to False, got the 'Setting this item to false may hide this item and its children' message but went ahead and did it anyway.
Outcome is that I can see the records in the table but can no longer view, update or delete existing records. I get a http 400 bad request page. I changed the 'Add' button back to Rendered True, but problem persists. Get the error also when I try to create a new record using the now re-instated button. Imported the personalization from another environment where it's working fine, bounced apache, clear cache etc and still problem persists.
Also if no record exists for employee, Add button works fine and I can create a record but from that point on cannot do anything with it.
Any help v much appreciated.
ThxYes, I've seen similar links/posts about how to activate buttons in the header of a table, but those do it by adding listeners to the renderer. My buttons would be directly in the CellRendererPane that is the container for the table header. I would have thought that by putting the button directly in the Cell RendererPane that it would have nothing to do with the rest of the table header. CellRendererPane extends Container. Is it not possible to put a JButton in a Container? JFrame extends indirectly from Container and you can add buttons to that.
Edited by: Bob.B on Oct 28, 2009 10:57 PM
Maybe you are looking for
-
Sender JMS Adapter does not work
Hi all, We have created a sender JMS adapter with transport protocol "Access JMS Provider with JNDI". The adapter connects to destination successfully, so the connection parameters are right. However, we do not receive any message when the sender sen
-
hi, i exported a tif sequence from a mp4 in premiere (cs6) to do some compositing on it. the exported images look the same but when doing some color correction on it the tif sequence reveals that it's in lower quality. the left side is the tif export
-
Hello All, My oracle version is 11g mounted on a linux box. I have a table with set of select queries inserted as CLOB with in it. They are queries extracted from dba sources with plsql variables in the query. I have to generate explain plan for each
-
How I can call controller's functions from another component?
Hi again! I make a few web Dynpro components, for example first for user-data processing, second - for project-data processing. In the controller of 1-st controller there is a function getUserById(). In the controller of 2-nd component I need such fu
-
I have DW CS4 and Windows XP with plenty of memory and have used this method before to align text with an image. I insert the image on the page and then type in the text beside the image that I want. If the text is long, then the second line of tex