@Bind(id = "grid", attribute = "selectionModel")
private static GridSelectionModel selectionModel = new CheckboxSelectionModel();

/**
 * 动态生成表格
 * @param dictionaryvo
 */
private void createGrid(DictionaryVo dictionaryvo)
{

columnModel = new GridColumnModel(); headerModel = new GridHeaderModel();
if(dictionaryvo !=null)
{
List<ColumnModel> columns = dictionaryvo.getColumns();
if(columns !=null&&columns.size()>0)
{
GridHeader gridHeader = new GridHeader();
for(int i=0;i<columns.size();i++)
{
ColumnModel colummodel = columns.get(i);
String value = "#{var.column"+i+"}";
GridColumn gridColumn = new GridColumn(colummodel.getName()).width(100).value(value);
columnModel.addColumn(gridColumn);


if(colummodel.getLabel()==null||colummodel.getLabel().equals(""))
{
GridHeaderCell gridheadercell = new GridHeaderCell(colummodel.getName());
gridHeader.addCell(gridheadercell);

}
else
{
GridHeaderCell gridheadercell = new GridHeaderCell(colummodel.getLabel());
gridHeader.addCell(gridheadercell);
}

}
headerModel.addHeader(gridHeader);
}
}

}
}
标记处动态的使datagrid每一行数据前都有一个checkbox,当选中某个或某些checkbox时在后台怎么获取选中的数据
谢谢,在线等

解决方案 »

  1.   

    package com.btcms.dictionary.litebean;import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;import org.operamasks.faces.annotation.Action;
    import org.operamasks.faces.annotation.BeforeRender;
    import org.operamasks.faces.annotation.Bind;
    import org.operamasks.faces.annotation.ManagedBean;
    import org.operamasks.faces.annotation.ManagedBeanScope;
    import org.operamasks.faces.annotation.ManagedProperty;
    import org.operamasks.faces.component.grid.CheckboxSelectionModel;
    import org.operamasks.faces.component.grid.GridColumn;
    import org.operamasks.faces.component.grid.GridColumnModel;
    import org.operamasks.faces.component.grid.GridHeader;
    import org.operamasks.faces.component.grid.GridHeaderCell;
    import org.operamasks.faces.component.grid.GridHeaderModel;
    import org.operamasks.faces.component.grid.GridSelectionModel;
    import org.operamasks.faces.component.grid.impl.UIDataGrid;
    import org.operamasks.faces.component.grid.provider.GridDataProvider;
    import org.operamasks.faces.component.html.impl.UIIFrame;
    import org.operamasks.faces.component.layout.impl.UIWindow;import com.btcms.constants.SessionManager;
    import com.btcms.dictionary.service.DictionaryManagerService;
    import com.btcms.dictionary.vo.ColumnModel;
    import com.btcms.dictionary.vo.DictionaryVo;
    /** 
     * 
     * This managed bean is generated automatically
     */
    @ManagedBean(name="dictionary.dictionaryContentBean", scope=ManagedBeanScope.SESSION)
    public class DictionaryContentBean implements Serializable {
    @ManagedProperty("#{dictionaryManagerService}")
    private DictionaryManagerService service; @Bind
    private UIDataGrid grid;

    @Bind(id = "grid", attribute = "var")
    private static String var = "var"; @Bind(id = "grid", attribute = "idColumn")
    private static String idColumn = "schemeCode"; @Bind(id = "grid", attribute = "columnModel")
    private static GridColumnModel columnModel; @Bind(id = "grid", attribute = "headerModel")
    private static GridHeaderModel headerModel; @Bind(id = "grid", attribute = "selectionModel")
    private static GridSelectionModel selectionModel = new CheckboxSelectionModel();
    private List<DictionaryVo> dictionaries=new ArrayList<DictionaryVo>();
    // 选择的字典
    private DictionaryVo dictionaryvo = null;
    // @ManagedProperty
    // private Object[] selectedData;  //获取所选择数据的值
    @BeforeRender
    private void beforerender(boolean ip)
    {
    dictionaryvo = (DictionaryVo)SessionManager.getSession("dic");
    if(!ip)
    {
    dictionaries = service.getDictionaies();
    if(dictionaryvo !=null)
    {
    service.setDictionaryVo(dictionaryvo);
    createGrid(dictionaryvo);
    }
    else
    {
    DefaultGridModel();
    }


    }


    }
    @Bind(id = "grid", attribute = "dataProvider")
    public <SortDirection> GridDataProvider getDataProvider() {
    return new GridDataProvider() {
    private Object[] objs; public Object[] getElementsById(String[] id) {
    if (id == null || id.length == 0)
    return new Object[0];
    Long[] ids = new Long[id.length];
    for (int i = 0; i < id.length; i++) {
    ids[i] = Long.valueOf(id[i]);
    }
    return service.findByIds(ids).toArray();

    } public Object[] getElements() {
    if (objs == null) {
    objs = service.getPagedData(start, limit,idColumn, true).toArray();
    }
    return objs;
    } public int getTotalCount() {
    return service.getTotalCount();
    } public void sort(final GridColumn column,
    final SortDirection direction) {
    objs = service.getPagedData( start, limit, column.getId(), false).toArray();
    }
    };
    }

    /**
     * 默认模型
     */
    public void DefaultGridModel() {
    columnModel = new GridColumnModel().columns(
    new GridColumn("id").width(100).value("#{var.code}").enableSort(true).hidden(false),
    new GridColumn("pname").width(100).value("#{var.name}")
    ); headerModel = new GridHeaderModel().headers(new GridHeader().cells(
    new GridHeaderCell().label("代码"), new GridHeaderCell()
    .label("显示名称")));
    }

    /**
     * 动态生成表格
     * @param dictionaryvo
     */
    private void createGrid(DictionaryVo dictionaryvo)
    {

    columnModel = new GridColumnModel(); headerModel = new GridHeaderModel();
    if(dictionaryvo !=null)
    {
    List<ColumnModel> columns = dictionaryvo.getColumns();
    if(columns !=null&&columns.size()>0)
    {
    GridHeader gridHeader = new GridHeader();
    for(int i=0;i<columns.size();i++)
    {
    ColumnModel colummodel = columns.get(i);
    String value = "#{var.column"+i+"}";
    GridColumn gridColumn = new GridColumn(colummodel.getName()).width(100).value(value);
    columnModel.addColumn(gridColumn);


    if(colummodel.getLabel()==null||colummodel.getLabel().equals(""))
    {
    GridHeaderCell gridheadercell = new GridHeaderCell(colummodel.getName());
    gridHeader.addCell(gridheadercell);

    }
    else
    {
    GridHeaderCell gridheadercell = new GridHeaderCell(colummodel.getLabel());
    gridHeader.addCell(gridheadercell);
    }

    }
    headerModel.addHeader(gridHeader);
    }
    }

    }
    @Bind
    private UIIFrame iframe;
    @Bind
    private UIWindow iwindow;
    @Action
    public void add_onclick(){
    SessionManager.putSession("status", "save");
    // selectedData = grid.getSelectedValues(); //获取选择项的所有值
    System.out.println("******************************value = " + grid.getSelectionModel());
    System.out.println("******************************column = " + grid.getColumnModel().getColumn(1));
    System.out.println("******************************column = " + grid.getColumnModel().getColumn("#{var.column0}"));
    System.out.println("******************************columnId = " + grid.getSelections().length);
    System.out.println("******************************columnId = " + grid.getSelections()[0]);
    System.out.println("******************************var = " + grid.getVar());
    System.out.println("******************************ids = " + grid.getSelectedIds().length);
    System.out.println("******************************ids = " + grid.getSelectedIds()[0]);
    String src = "/dictionary/dictionaryOperation.xhtml";
    iframe.load(src);
    iwindow.setX(0);
    iwindow.setY(0);
    iwindow.setWidth(300);
    iwindow.setHeight(400);
    iwindow.setTitle("新增" + dictionaryvo.getLabelname());
    iwindow.show();
    }
    @Action
    private void upd_onclick(){
    SessionManager.putSession("status", "update");
    // selectedData = grid.getSelectedValues(); //获取选择项的所有值
    String src = "/dictionary/dictionaryOperation.xhtml";
    iframe.load(src);
    iwindow.setX(0);
    iwindow.setY(0);
    iwindow.setWidth(300);
    iwindow.setHeight(400);
    iwindow.setTitle("修改" + dictionaryvo.getLabelname());
    iwindow.show();
    }
    @Action
    private void del_onclick(){
    DictionaryVo dictionaryvo = (DictionaryVo) SessionManager
    .getSession("dic");
     Object classname = dictionaryvo.getClassname();
    }
    @Action
    private void reload_onclick(){
    if(iwindow!=null)
    iwindow.close();
    dictionaryvo = (DictionaryVo)SessionManager.getSession("dic");
    dictionaries = service.getDictionaies();
    if(dictionaryvo !=null)
    {
    service.setDictionaryVo(dictionaryvo);
    createGrid(dictionaryvo);
    }
    }
    }
      

  2.   

    你是不是想根据选择的一个值获得符合这个值的列表。
    说实在的看你的代码都晕了。
    我的建议是:<h:selectOneMenu value="#{bean.id}">
                <f:selectItems value="#{bean.selectItemList}" />
              </h:selectOneMenu>把id传入后台,根据id查询list。当然这个list是一个全局的变量。
    与bean对应的java代码:
    SelectItems的用法
    public List <SelectItem> getSelectItemList() {
        List <SelectItem> selectItemList = new ArrayList<SelectItem>();
        selectItemList.add(new SelectItem("1", "Label1"));
        selectItemList.add(new SelectItem("2", "Label2"));
        
        return selectItemList;
    }
      

  3.   

    我想的是既然前台是list或者map那么可以点击一个按钮讲表单穿给action然后便利这个list或者map如果其中的boolean值为true就将其放在一个新的list中再返回或者做新的处理。我现在也没有找到其他的解决方案