javascript - Setting a column value in an enhanced datagrid -
if have xpage datagrid
on using rest service. in datagrid
2 records stored individual records in notes
. user edits xpage , goes edit 1 of columns in data grid row.
there column a, column b , column c. column c calculated using script library "abc" 2 values on column , column b, create background notes document , displayed on datagrid.
as example, column = 12
, column b = 24
, column c calculated coming 397. column has change , recalculate using script library abc. in save changes
button, give me example code showing how select changed row, set 2 variables column , column b, call script library "abc" , either update background notes document , redisplay datagrid or update datagrid , have update background notes document. column editable column.
here code
var rsstore = restserviceobj; var items = gridobj.selection.getselected(); dojo.foreach(items, function(selecteditem) { if(selecteditem != null) { viewscope.cola = rsentry.getcolumnvalue("a"); viewscope.colb = rsentry.getcolumnvalue("b"); var ans = abc(); } });
use datatable
list documents.
calculate in property value
notesdocuments want list.
add column editable field , b , c read fields datatable.
add onchange
event column a's editable field:
- calculate c based on , b function abc(a, b)
- save document
- refresh table
this way c gets calculated automatically whenever user changes value a.
<xp:panel id="paneltable"> <xp:datatable id="datatable1" rows="100" var="doc"> <xp:this.value><![cdata[#{javascript: var documents = []; var col = view1.getallentriesbykey("yourkey", true); var entry = col.getfirstentry(); while (entry != null) { documents.push(entry.getdocument()); entry = col.getnextentry(entry); } return documents; }]]></xp:this.value> <xp:column id="column1"> <xp:this.facets> <xp:span xp:key="header">a</xp:span> </xp:this.facets> <xp:inputtext id="inputtext1" value="#{doc.a}"> <xp:eventhandler event="onchange" submit="true" refreshmode="partial" refreshid="paneltable"> <xp:this.action><![cdata[#{javascript: var = doc.getitemvalue("a").get(0); var b = doc.getitemvalue("b").get(0); doc.replaceitemvalue("c", abc(a, b)); doc.save(); view1.refresh(); }]]></xp:this.action> </xp:eventhandler> </xp:inputtext> </xp:column> <xp:column id="column2"> <xp:this.facets> <xp:span xp:key="header">b</xp:span> </xp:this.facets> <xp:text id="computedfield3" value="#{doc.b}" /> </xp:column> <xp:column id="column3"> <xp:this.facets> <xp:span xp:key="header">c</xp:span> </xp:this.facets> <xp:text id="computedfield2" value="#{doc.c}" /> </xp:column> </xp:datatable> </xp:panel>
Comments
Post a Comment