You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by "Michael H. Chang" <ch...@llnl.gov> on 2006/06/06 21:32:33 UTC

tomahawk

I am using tomahawk dataTable and dataScroller tags to display results 
retrieved from database. For each row, I would like to have a button that 
will edit a value associated with that particular row. But the JSF gave all 
rows on the page same id, when I press one button, every row was fired off. 
Any suggestion is highly appreciated.

Here is my code:

<t:dataTable id="data" styleClass="TabForegroundColor" 
headerClass="standardTable_Header" footerClass="standardTable_Header"
rowClasses="AltRows1, AltRows2"
columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
var="bl" value="#{ctReportdatahandler.ctReportModel}"
rows="#{ctReportdatahandler.noOfRows}"
rowIndexVar="index"
forceId="true" forceIdIndex="true"
sortColumn="#{ctReportdatahandler.sort}"
sortAscending="#{ctReportdatahandler.ascending}" preserveSort="true">
<t:column>
<f:facet name="header">
<h:outputText value="" />
</f:facet>
<h:commandButton value="h" 
actionListener="{ctReportdatahandler.historyCtBarcodes}" 
action="#{ctReportdatahandler.dummy}" 
onclick="barcodeHistory('#{bl.ctBarcode}')" styleClass="Button" /> </t:column>

Incorrect source:

<tr class="AltRows1"><td class="standardTable_Column"><input 
id="_id26:data:_id29" name="_id26:data:_id29" type="submit" value="h" 
onclick="barcodeHistory('CT00468873');clear__5Fid26();document.forms['_id26'].elements['autoScroll'].value=getScrolling();" 
class="Button" /></td></tr>
<tr class="AltRows1"><td class="standardTable_Column"><input 
id="_id26:data:_id29" name="_id26:data:_id29" type="submit" value="h" 
onclick="barcodeHistory('CT00468877');clear__5Fid26();document.forms['_id26'].elements['autoScroll'].value=getScrolling();" 
class="Button" /></td></tr>


Both buttons are _id26:data:_id29, I expect the first row _id26:data0:_id29 
and 2nd row _id26:data1:_id29 so if I press button for row 0, row1 button 
won't get fired off.



Michael H. Chang
2-1148

Re: tomahawk

Posted by Cosma Colanicchia <co...@gmail.com>.
With t:dataTable, you should use forceIdIndexFormula="#{
yourBeanVar.primaryKeyColumn}" to tell which column use as the row index
(tableId:rowIndex:controlId).

Normally, if you don't specify one, sequential indexes are generated. This
can lead to out-of-sync problem if someone else deletes of insert some
records while the dataTable is displayed. Don't know why yours is fixed to
"data".. you have set a lot of forceIdIndex, forceId, indexVar etc... try to
start from scratch with only the forceIdIndexFormula one.


Cosma



2006/6/7, Joel Wilson <jo...@devotionmedia.com>:
>
> You need to have the action that is being called be on the object in the
> list not in the backing bean. I use that technique with a custom dataSource
> i created for Hibernate.
>
> On Jun 6, 2006, at 3:32 PM, Michael H. Chang wrote:
>
> I am using tomahawk dataTable and dataScroller tags to display results
> retrieved from database. For each row, I would like to have a button that
> will edit a value associated with that particular row. But the JSF gave all
> rows on the page same id, when I press one button, every row was fired off.
> Any suggestion is highly appreciated.
>
> Here is my code:
>
> <t:dataTable id="data" styleClass="TabForegroundColor"
> headerClass="standardTable_Header" footerClass="standardTable_Header"
> rowClasses="AltRows1, AltRows2"
>
> columnClasses="standardTable_Column,standardTable_ColumnCentered,standardTable_Column"
> var="bl" value="#{ctReportdatahandler.ctReportModel}"
> rows="#{ctReportdatahandler.noOfRows}"
> rowIndexVar="index"
> forceId="true" forceIdIndex="true"
> sortColumn="#{ctReportdatahandler.sort}"
> sortAscending="#{ctReportdatahandler.ascending}" preserveSort="true">
> <t:column>
> <f:facet name="header">
> <h:outputText value="" />
> </f:facet>
> <h:commandButton value="h" actionListener="{
> ctReportdatahandler.historyCtBarcodes}" action="#{
> ctReportdatahandler.dummy}" onclick="barcodeHistory('#{bl.ctBarcode}')"
> styleClass="Button" /> </t:column>
>
> Incorrect source:
>
> <tr class="AltRows1"><td class="standardTable_Column"><input id*
> ="_id26:data:_id29*" name="_id26:data:_id29" type="submit" value="h"
> onclick="barcodeHistory('CT00468873');clear__5Fid26();document.forms['_id26'].elements['autoScroll'].value=getScrolling();"
> class="Button" /></td></tr>
> <tr class="AltRows1"><td class="standardTable_Column"><input id*
> ="_id26:data:_id29*" name="_id26:data:_id29" type="submit" value="h"
> onclick="barcodeHistory('CT00468877');clear__5Fid26();document.forms['_id26'].elements['autoScroll'].value=getScrolling();"
> class="Button" /></td></tr>
>
>
>  Both buttons are _id26:data:_id29, I expect the first row
> _id26:data0:_id29 and 2nd row _id26:data1:_id29 so if I press button for row
> 0, row1 button won't get fired off.
>
>
>
>  Michael H. Chang
> 2-1148
>
>
> Joel Wilson
> Web Application Developer/Architect
> D E V O T I O N <http://www.devotionmedia.com>
> ---------------------
> Skype: Jesfrk7
> Skype: 321.285.7470
>
> Cell: 321.332.4654
> Office: 407.677.8514
> Fax: 407.677.8610
> ---------------------
> 1964 Howell Branch Road
> Suite 102
> Winter Park, Florida 32792
> ---------------------
> Changing the world, one byte at a time . . .
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

Re: tomahawk

Posted by Joel Wilson <jo...@devotionmedia.com>.
You need to have the action that is being called be on the object in  
the list not in the backing bean. I use that technique with a custom  
dataSource i created for Hibernate.

On Jun 6, 2006, at 3:32 PM, Michael H. Chang wrote:

> I am using tomahawk dataTable and dataScroller tags to display  
> results retrieved from database. For each row, I would like to have  
> a button that will edit a value associated with that particular  
> row. But the JSF gave all rows on the page same id, when I press  
> one button, every row was fired off. Any suggestion is highly  
> appreciated.
>
> Here is my code:
>
> <t:dataTable id="data" styleClass="TabForegroundColor"  
> headerClass="standardTable_Header" footerClass="standardTable_Header"
> rowClasses="AltRows1, AltRows2"
> columnClasses="standardTable_Column,standardTable_ColumnCentered,stand 
> ardTable_Column"
> var="bl" value="#{ctReportdatahandler.ctReportModel}"
> rows="#{ctReportdatahandler.noOfRows}"
> rowIndexVar="index"
> forceId="true" forceIdIndex="true"
> sortColumn="#{ctReportdatahandler.sort}"
> sortAscending="#{ctReportdatahandler.ascending}" preserveSort="true">
> <t:column>
> <f:facet name="header">
> <h:outputText value="" />
> </f:facet>
> <h:commandButton value="h"  
> actionListener="{ctReportdatahandler.historyCtBarcodes}" action="# 
> {ctReportdatahandler.dummy}" onclick="barcodeHistory('# 
> {bl.ctBarcode}')" styleClass="Button" /> </t:column>
>
> Incorrect source:
>
> <tr class="AltRows1"><td class="standardTable_Column"><input  
> id="_id26:data:_id29" name="_id26:data:_id29" type="submit"  
> value="h" onclick="barcodeHistory('CT00468873');clear__5Fid26 
> ();document.forms['_id26'].elements['autoScroll'].value=getScrolling 
> ();" class="Button" /></td></tr>
> <tr class="AltRows1"><td class="standardTable_Column"><input  
> id="_id26:data:_id29" name="_id26:data:_id29" type="submit"  
> value="h" onclick="barcodeHistory('CT00468877');clear__5Fid26 
> ();document.forms['_id26'].elements['autoScroll'].value=getScrolling 
> ();" class="Button" /></td></tr>
>
>
> Both buttons are _id26:data:_id29, I expect the first row  
> _id26:data0:_id29 and 2nd row _id26:data1:_id29 so if I press  
> button for row 0, row1 button won't get fired off.	
>
>
> Michael H. Chang
> 2-1148

Joel Wilson
Web Application Developer/Architect
D E V O T I O N
---------------------
Skype: Jesfrk7
Skype: 321.285.7470

Cell: 321.332.4654
Office: 407.677.8514
Fax: 407.677.8610
---------------------
1964 Howell Branch Road
Suite 102
Winter Park, Florida 32792
---------------------
Changing the world, one byte at a time . . .