You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am using PagedTable control and i am facing problem in dynamically adding row in the Table. When I add row dynamically, it is not reflected in the table UI, I have to either change the Items per Row (int the UI) or click on the column header to see the inserted row in the PagedTable.
I am using PagedTable 0.6.3 and my application is deployed inside JBOSS AS 7.0.1 container.
Here is my code:
private void initUI()
{
final Action ACTION_ADD = new Action("Add");
final Action ACTION_EDIT = new Action("Edit");
final Action ACTION_CANCEL = new Action("Cancel");
final Action[] SELECT_MENU_ACTIONS = new Action[] { ACTION_ADD, ACTION_EDIT,ACTION_CANCEL};
final Action[] NULL_MENU_ACTIONS = new Action[] { ACTION_ADD, ACTION_CANCEL};
final PagedTable table = new PagedTable("");
table.setWidth("100%");
table.setSelectable(true);
table.setMultiSelect(false);
table.setImmediate(true); // react at once when something is selected
public void handleAction(Action action, Object sender, Object target)
{
// TODO Auto-generated method stub
if (ACTION_ADD == action)
{
try
{
showAddForm(table); // Takes input and inset a new row in the PagedTable
}catch(Exception ex)
{
getWindow().showNotification(
"Error!", ex.getMessage(),
Notification.TYPE_ERROR_MESSAGE);
}
return;
}
else if (ACTION_EDIT == action)
{
g_selectedItem = table.getContainerDataSource().getItem(target);
if(g_selectedItem == null)
return;
// showEditForm();
return;
}
}
});
setWidth("100%");
loadTableRecords(table.getContainerDataSource());
addComponent(table);
addComponent(table.createControls());
table.setPageLength(5); // Call this method only after calling table.createControls();
}
private IndexedContainer getDSStructure()
{
IndexedContainer container = new IndexedContainer();
finally I am displaying a Window when user right clicks and chooses Add menu item and inside the form I am capturing data to be displayed in the PagedTable
try
{
long id;
String name;
String shortName;
String status;
id = Long.parseLong((String)((TextField)frm.getField("id")).getValue());
name = (String)((TextField)frm.getField("name")).getValue();
shortName = (String)((TextField)frm.getField("shortName")).getValue();
if(((String)cbStatus.getValue()).compareTo("Up") == 0)
{
status = "U";
}
else if(((String)cbStatus.getValue()).compareTo("Down") == 0)
{
status = "D";
}
else if(((String)cbStatus.getValue()).compareTo("Inactive") == 0)
{
status = "I";
}
else
{
throw new Exception("Invalid Status [" + (String)cbStatus.getValue() + "]");
}
I am using PagedTable control and i am facing problem in dynamically adding row in the Table. When I add row dynamically, it is not reflected in the table UI, I have to either change the Items per Row (int the UI) or click on the column header to see the inserted row in the PagedTable.
I am using PagedTable 0.6.3 and my application is deployed inside JBOSS AS 7.0.1 container.
Here is my code:
private void initUI()
{
final Action ACTION_ADD = new Action("Add");
final Action ACTION_EDIT = new Action("Edit");
final Action ACTION_CANCEL = new Action("Cancel");
final Action[] SELECT_MENU_ACTIONS = new Action[] { ACTION_ADD, ACTION_EDIT,ACTION_CANCEL};
final Action[] NULL_MENU_ACTIONS = new Action[] { ACTION_ADD, ACTION_CANCEL};
final PagedTable table = new PagedTable("");
table.setWidth("100%");
table.setSelectable(true);
table.setMultiSelect(false);
table.setImmediate(true); // react at once when something is selected
table.setContainerDataSource(getDSStructure());
table.setNullSelectionAllowed(false);
table.setColumnCollapsingAllowed(true);
// turn on column reordering and collapsing
table.setColumnReorderingAllowed(true);
table.setColumnCollapsingAllowed(true);
// set column headers
table.setColumnHeaders(new String[] {"ID","Name", "Short Name","Satus","ROD"});
table.setVisibleColumns(new Object[] {"id", "name","shortName", "status","rod"});
table.addActionHandler(new Action.Handler()
{
public Action[] getActions(Object target, Object sender)
{
Item selectedItem = table.getContainerDataSource().getItem(target);
if(selectedItem == null)
return NULL_MENU_ACTIONS;
else
{
return SELECT_MENU_ACTIONS;
}
}
public void handleAction(Action action, Object sender, Object target)
{
// TODO Auto-generated method stub
if (ACTION_ADD == action)
{
try
{
showAddForm(table); // Takes input and inset a new row in the PagedTable
}catch(Exception ex)
{
getWindow().showNotification(
"Error!", ex.getMessage(),
Notification.TYPE_ERROR_MESSAGE);
}
return;
}
else if (ACTION_EDIT == action)
{
g_selectedItem = table.getContainerDataSource().getItem(target);
if(g_selectedItem == null)
return;
// showEditForm();
return;
}
}
});
setWidth("100%");
loadTableRecords(table.getContainerDataSource());
addComponent(table);
addComponent(table.createControls());
table.setPageLength(5); // Call this method only after calling table.createControls();
}
private IndexedContainer getDSStructure()
{
IndexedContainer container = new IndexedContainer();
container.addContainerProperty("id", String.class,null);
container.addContainerProperty("name", String.class,null);
container.addContainerProperty("shortName", String.class,null);
container.addContainerProperty("status", String.class,null);
container.addContainerProperty("rod", String.class,null);
return container;
}
private void loadTableRecords(Indexed container ) throws Exception
{
Listlist = application.getNBBean().readAll();
for(int i=0;i<list.size();i++)
{
addRow(container, list.get(i));
}
}
private Item addRow(Indexed container, NBPojo data)
{
SimpleDateFormat df = new SimpleDateFormat ("dd-MM-yyyy hh:mm:ss aa");
Item item = container.addItem(data.getID());
item.getItemProperty("id").setValue(data.getID());
item.getItemProperty("name").setValue(data.getName());
item.getItemProperty("shortName").setValue(data.getShortName());
item.getItemProperty("status").setValue(data.getFriendlyStatus());
item.getItemProperty("rod").setValue( df.format(data.getRod()));
return item;
}
finally I am displaying a Window when user right clicks and chooses Add menu item and inside the form I am capturing data to be displayed in the PagedTable
showAddForm(final PagedTable table)
{
...
...
...
public void buttonClick(ClickEvent event)
{
try
{
frm.commit();
}catch(Exception ex)
{
return;
}
try
{
long id;
String name;
String shortName;
String status;
id = Long.parseLong((String)((TextField)frm.getField("id")).getValue());
name = (String)((TextField)frm.getField("name")).getValue();
shortName = (String)((TextField)frm.getField("shortName")).getValue();
if(((String)cbStatus.getValue()).compareTo("Up") == 0)
{
status = "U";
}
else if(((String)cbStatus.getValue()).compareTo("Down") == 0)
{
status = "D";
}
else if(((String)cbStatus.getValue()).compareTo("Inactive") == 0)
{
status = "I";
}
else
{
throw new Exception("Invalid Status [" + (String)cbStatus.getValue() + "]");
}
NBPojo dataObject = addUser(id, name, shortName, status); // Insert into Database
Item item = addRow(table.getContainerDataSource(), dataObject); // Insert into PagedTable - NOT DISPLAYED
//table.setCurrentPage(table.getCurrentPage()); // Refresh Table with added Item
((Window) wnd.getParent()).removeWindow(wnd);
}catch(DuplicateEntityException dee)
{
dee.printStackTrace();
getWindow().showNotification(
"Duplicate!", dee.getMessage(),
Notification.TYPE_ERROR_MESSAGE);
}catch(Exception ex)
{
ex.printStackTrace();
getWindow().showNotification(
"Error!", ex.getMessage(),
Notification.TYPE_ERROR_MESSAGE);
}
}
});
}
Am I doing anything Wrong! or is there any workaround ?
The text was updated successfully, but these errors were encountered: