0

Checkbox inside Listcell

asked 2010-06-16 02:27:06 +0800

drishtisv gravatar image drishtisv
135 2

updated 2010-06-17 02:14:00 +0800

Hi all

Is any example on following?
he
I am trying to write a code, Listbox will fill with table data using annotation binding. In a listbox a column having a boolean type. user will check/uncheck serially or randomly. After finishing the user work user will click the button and the check /uncheck data will commited to table.

delete flag offensive retag edit

7 Replies

Sort by ยป oldest newest

answered 2010-06-19 08:42:36 +0800

drishtisv gravatar image drishtisv
135 2

Thank you Arsen

Now it is cleared.

link publish delete flag offensive edit

answered 2010-06-19 07:26:38 +0800

Arsen gravatar image Arsen
384 5

Listbox has model, it some kind of collection of elements which are shown on listbox.
here you assigning this collection to listbox. usrmenulst - listbox, usrmenulist - it's model. Names are very similar, so it's a little bit confusing. I suggest it's better to rename model variable.

<listbox id="usrmenulst" width="100%" model="@{usrmenulist}" >

If model defines what to show (in our case it's collection of UserMenu objects) , the another object - renderer - defines how to show
<listitem id="liusrmenu" self="@{each='usrmenu'}" value="@{usrmenu}">
  <listcell> <!-- no need for id attribute here --> 
  <checkbox checked="@{usrmenu.assigned}"/> <!-- no need for id attribute here --> 
   </listcell> 
  <listcell label="@{usrmenu.menu_name}"/>
  <listcell label="@{usrmenu.menu_item_name}"/>
</listitem>

<checkbox checked="@{usrmenu.assigned}"/> - here you bind checkbox state to property "assigned" of MenuItem object returned by model.
So usrmenulst.getModel().getElementAt(i) - returns element with index i from model of listbox. This element is instance of MenuItem. To get checkbox's state, should check binded property of MenuItem element -getAssigned()

You can also read on this site lot of good tutorials and smalltalks about listmodel's and databinding.

Hope this helps.

link publish delete flag offensive edit

answered 2010-06-19 06:40:15 +0800

drishtisv gravatar image drishtisv
135 2

updated 2010-06-19 06:43:02 +0800

Thank you very much Arsen

it works after replacing following statement.



Boolean lm = (usrmenulst.getModel().getElementAt(i)).getAssigned();


can you explain me. How it is works? bcoz i m confused

Thanks in advance

link publish delete flag offensive edit

answered 2010-06-19 03:35:06 +0800

Arsen gravatar image Arsen
384 5

Strange code

Boolean lm = Boolean.valueOf(usrmenulst.getModel().getElementAt(i).toString());

I guess it should be something like this
Boolean lm = ((UserMenu)usrmenulst.getModel().getElementAt(i)).getAssigned()

or do I miss something?

link publish delete flag offensive edit

answered 2010-06-19 02:07:01 +0800

drishtisv gravatar image drishtisv
135 2

Hi Arsen,

I tried please look at my zul file

<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" arg0="sys_logins"?>

<zk>
<window id="sys_logins" title="User Master" closable="true" border="normal" xmlns:a="http://www.zkoss.org/2005/zk/annotation" height="100%" contentStyle="overflow:auto">
<style src="/css/single_de.css"/>
<zscript>
<![CDATA[
import com.drishti.Admin.MstUserRegistration;

com.drishti.Admin.MstUserRegistration user = new com.drishti.Admin.MstUserRegistration();
List users = user.UserList();


com.drishti.Admin.UserMenuAssignController usrmenu = new com.drishti.Admin.UserMenuAssignController();
List usrmenulist = usrmenu.UsermenuList(user.getUser_id());
]]>
</zscript>
<hbox>
<vbox width="20%">
<listbox id="lbuserlist" rows="10" model="@{users}" selectedItem="@{user}" onSelect="clickProc(self.getSelectedItem())" >
<listhead>
<listheader label="User" sort="auto"/>
</listhead>

<listitem self="@{each='user'}" value="@{user}">
<listcell label="@{user.user_id}"/>
</listitem>
</listbox>
</vbox>
<grid>
<rows>
<row>
<vbox width="79%">
<hbox align="start" width="30%">
<button id="updateallRec" label="Update" onClick="Update_all()" />
</hbox>
</vbox>
</row>
<row>
<vbox width="79%">
<listbox id="usrmenulst" width="100%" model="@{usrmenulist}" >
<listhead>
<listheader label="Assigned" />
<listheader label="Menu"/>
<listheader label="Menu Item" />
</listhead>
<listitem id="liusrmenu" self="@{each='usrmenu'}" value="@{usrmenu}">
<listcell id="chkbox">
<!-- <checkbox id="chkb_assigned" checked="@{usrmenu.assigned}"
onCheck="usrmenu.setAssigned(self.checked);if(self.checked){self.parent.setLabel(String.valueOf('Y'));} else {self.parent.setLabel(String.valueOf('N'));};"/>
-->
<checkbox id="chkb_assigned" checked="@{usrmenu.assigned}"/>
</listcell>
<listcell label="@{usrmenu.menu_name}"/>
<listcell label="@{usrmenu.menu_item_name}"/>
</listitem>
</listbox>
</vbox>
</row>
</rows>
</grid>
</hbox>


<zscript>
<![CDATA[
import java.util.*;
import com.drishti.Admin.MstUserRegistrationTable;
import org.zkoss.zul.*;
import org.zkoss.zul.Checkbox;
import org.zkoss.zul.event.*;
import org.zkoss.zkplus.databind.*;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listitem;

public void Update_all()
{
for (int i = 0;i < usrmenulst.getItemCount(); i++) {
Boolean lm = Boolean.valueOf(usrmenulst.getModel().getElementAt(i).toString());
// Listitem li = usrmenulst.getItems().get(i); // get list items from usrmenulst ListBox
alert(lm);
// alert(li.getChildren().get(0).getLabel()); Will Get Listcell value
}
alert("Record Updated ....");
}

public void clickProc(Listitem selItem)
{
// alert(user.getUser_id());
// alert(usrmenu.UsermenuList(user.getUser_id()).size());
model = ListModelList.instance(usrmenu.UsermenuList(user.getUser_id()));
usrmenulst.setModel(model);
}

]]>
</zscript>
</window>
</zk>


Every time I get the "false" value of lm at Update_all()

link publish delete flag offensive edit

answered 2010-06-17 05:12:54 +0800

drishtisv gravatar image drishtisv
135 2

updated 2010-06-17 08:07:46 +0800

Thanks Arsen

I am newbie can you tell me how to retrieve modified objects from listbox's model.

Thanks in an advance

link publish delete flag offensive edit

answered 2010-06-17 02:27:37 +0800

Arsen gravatar image Arsen
384 5

Something like this

<listbox model="@{model}">
   <listhead>
      <listheader label="Boolean column"/>
      <listheader label="Other column"/>
   </listheader>
   <listitem self="@{each=v}">
      <listcell><checkbox checked="@{v.<your boolean property>}"/></listcell>
      <listcell label="@{v.someOtherProperty}"/>
   </listitem>
</listbox>

And inside onClick event of button you retrieve modified objects from listbox's model and put them into db.

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2010-06-16 02:27:06 +0800

Seen: 674 times

Last updated: Jun 19 '10

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More