Tabelle in andere Tabelle?

P

PrimeTime2

Hallo...
Also ich habe eine JSF / Richfaces Tabelle mit 4 Spalten
1. ID
2.Name
3. Button - bearbeiten
4.löschen

Wenn ich auf den bearbeiten button drücke sollen die Daten der Tabelle in eine
Tabelle die darunter ist übertragen werden, die bearbeitbar ist.
Jedoch habe ich gar keine Idee wie genau ich das hinbekommen soll.
Ich muss ja für den Button-bearbeiten irgendwie eine Java Befehl schreiben.
Ich hoffe ihr könnt mir helfen...
 
Hey...
Also ich habe mir das Tutorial schon einige mal durchgelesen, aber ich weis jetzt trotzdem nicht genau wie ich das umsetzen sollte.

Also ich habe 2 Tabellen. In der ersten Tabelle stehen ID und Name und es können belieb viele neue
hinzugefügt werde.
Dann habe ich in jeder Zeile ein Bearbeitungsbutton und wenn ich den drücke soll er die ID / Name von der Zeile in die andere Tabelle ausgeben die darunter ist ( welches Edit fenster sind ).
Es sol also keine neue Seite oder so geöffnet werden sondern bloss die Daten von einer in die andere Tabelle übernommen werden.
So sieht mein Quelltext aus....
Hoffe ihr könnt mir helfen.

1 Tabelle
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:rich="http://richfaces.org/rich">

<h:form>
	<a4j:region>
		<rich:dataTable cellpadding="0" cellspacing="0" rows="8"
			style="vertical-align:top" border="0" rowKeyVar="row"
			value="#{datasourcesModell.dataList}" var="dataItem">


			<rich:column width="80px" style="text-align:center">
				<f:facet name="header">
					<h:outputText value="ID" />
				</f:facet>
				<h:outputText value="#{dataItem.id}"
					rendered="#{dataItem.id != null}" />
				<h:outputText value="#{dataItem.id}"
					rendered="#{dataItem.id == null}" />
			</rich:column>

			<rich:column width="250px" style="text-align:center">
				<f:facet name="header">
					<h:outputText value="Name" />
				</f:facet>
				<h:outputText value="#{dataItem.name}"
					rendered="#{dataItem.id != null}" />
				<h:outputText value="#{dataItem.name}"
					rendered="#{dataItem.id == null}" />
			</rich:column>

			<rich:column style="text-align:center">
				<f:facet name="header">
					<h:outputText value="#{msg['administration.edit']}"
						style="FONT-WEIGHT: bold;" />
				</f:facet>

				<a4j:commandButton value="#{msg['administration.edit']}"
					reRender="table" image="/images/add.png"
					action="#{datasourcesModell.delete2}"
					actionListener="#{datasourcesModell.currentRow}">
					<h:inputHidden id="dataItemId" value="#{dataItem.id}" />
				</a4j:commandButton>
			</rich:column>


			<rich:column style="text-align:center">
				<f:facet name="header">
					<h:outputText value="#{msg['administration.delete']}"
						style="FONT-WEIGHT: bold;" />
				</f:facet>
				<a4j:commandLink ajaxSingle="true" id="deletelink"
					oncomplete="#{rich:component('deletePanel')}.show()">
					<h:graphicImage value="/images/delete.png" style="border:0" />
					<f:setPropertyActionListener value="#{row}"
						target="#{datasourcesModell.currentRow}" />
				</a4j:commandLink>
				<rich:toolTip for="deletelink" value="Delete" />
			</rich:column>



			<h:column>
				<h:dataTable value="#{dataItem.innerList}" var="innerItem">
					<h:column>
						<h:outputText value="#{innerItem.name}" />
					</h:column>

					<h:column>
						<h:outputText value="#{innerItem.value}" />
					</h:column>
				</h:dataTable>
			</h:column>



			<f:facet name="footer">
				<rich:datascroller renderIfSinglePage="false" maxPages="5" />
			</f:facet>

		</rich:dataTable>
	</a4j:region>
</h:form>



<h:form>
	<a4j:commandButton value="#{msg['administration.add']}"
		action="#{datasourcesModell.addNewDataItem}" />
	<a4j:commandButton value="#{msg['administration.save']}"
		action="#{datasourcesModell.saveNewDataItems}" />
</h:form>

2 tabelle ( steht aber im selber JFS Datein, da sie ja genau darunter ist )
Code:
<h:form>
	<h:panelGroup layout="block" style="padding-top:50px">
		<rich:dataTable cellpadding="0" cellspacing="0"
			style="vertical-align:top" border="0" var="record"
			value="#{datasourcesModell}">


			<rich:column width="80px"
				style="text-align:center; BACKGROUND-COLOR: #cccccc; ">
				<h:outputText value="Id" />
			</rich:column>

			<rich:column width="170px"
				style="text-align:center; BACKGROUND-COLOR: #e7e7e7">
				<h:inputText value="" />
			</rich:column>

			<rich:column breakBefore="true" width="80px"
				style="text-align:center; BACKGROUND-COLOR: #cccccc; ">
				<h:outputText value="Name" />
			</rich:column>

			<rich:column width="170px"
				style="text-align:center; BACKGROUND-COLOR: #e7e7e7">
				<h:inputText value="" />
			</rich:column>

			<rich:column breakBefore="true" width="80px"
				style="text-align:center; BACKGROUND-COLOR: #cccccc; ">
				<h:outputText value="Test" />
			</rich:column>

			<rich:column width="170px"
				style="text-align:center; BACKGROUND-COLOR: #e7e7e7">
				<h:inputText value="" />
			</rich:column>

		</rich:dataTable>
	</h:panelGroup>
	<a4j:commandButton value="#{msg['administration.save']}"
		action="#{datasourcesModell.saveNewDataItems}" />
</h:form>
</html>

Wie man sehen kann habe ich bei dem Edit-Button schon etwas rumprobiert, aber bin nicht zum Ziel gekommen. Ich weis einfach nciht mehr so genau wie ich weiter machen soll.

Java Klasse
Code:
public class DatasourcesModell {

	private List<MyData> dataList;

	public void loadDataList() {

		dataList = new ArrayList<MyData>();

		addNewDataItem();
	}

	// Init
	// ---------------------------------------------------------------------------------------

	// Add new row to datatable.
	private long addCount;

	// Add row numbers.
	private HtmlDataTable numberDataTable;

	private HtmlDataTable dataTable;

	private MyData dataItem;

	private UIData table;

	private int currentRow;

	private List<MyData> innerList;

	// Constructors
	// -------------------------------------------------------------------------------

	public DatasourcesModell() {
		// Preload data list.
		loadDataList();
	}

	// Actions
	// ------------------------------------------------------------------------------------

	// Add new row to datatable: add new data item.
	public String addNewDataItem() {

		// Add new MyData item to the data list.
		dataList.add(new MyData(addCount));
		addCount++;

		log(dataList);
		return null;
	}

	// Select Methode
	public void selectDataItem(ActionEvent event) {
		HtmlInputHidden tmpHiddenInputContainingId = (HtmlInputHidden) event
				.getComponent().findComponent("dataId");
		if (tmpHiddenInputContainingId != null) {
			Object tmpIdOfItemToDelete = tmpHiddenInputContainingId.getValue();
			System.out.println(tmpIdOfItemToDelete);
			for (MyData tmpItem : dataList) {
				toString();
				if (tmpItem.getId().equals(tmpIdOfItemToDelete)) {
					// Das item soll gelöscht werden.
					dataList.remove(tmpItem);
					// Iteration der Liste kann abgebrochen werden.
					break;
				}
			}
		}
	}

	public void delete2() {
		dataList.remove(currentRow);
	}

	// Save datatable

	// Getters
	// ------------------------------------------------------------------------------------

	public List<MyData> getDataList() {
		return dataList;
	}

	public HtmlDataTable getNumberDataTable() {
		return numberDataTable;
	}

	public HtmlDataTable getDataTable() {
		return dataTable;
	}

	public MyData getDataItem() {
		return dataItem;
	}

	public int getCurrentRow() {
		return currentRow;
	}

	public List<MyData> getInnerList() {
		return innerList;
	}

	// Setters
	// ------------------------------------------------------------------------------------

	public void setNumberDataTable(HtmlDataTable numberDataTable) {
		this.numberDataTable = numberDataTable;
	}

	public void setDataTable(HtmlDataTable dataTable) {
		this.dataTable = dataTable;
	}

	public void setDataItem(MyData dataItem) {
		this.dataItem = dataItem;
	}

	public void setCurrentRow(int currentRow) {
		this.currentRow = currentRow;
	}

	public void setInnerList(List<MyData> innerList) {
		this.innerList = innerList;
	}

	// Helpers
	// ------------------------------------------------------------------------------------

	private static void log(Object object) {
		System.out.println(new Exception().getStackTrace()[1].getMethodName()
				+ ": " + object);
	}

}
 

Neue Beiträge

Zurück