Gwt 具有自定义标题(包含SearchBox和ListBox)的CellTable
如何在安全html上创建事件。正如我想对celltable中的列进行过滤一样。 所以我在表的标题处添加了搜索框。我想访问textbox并在textbox上执行一些事件 代码:Gwt 具有自定义标题(包含SearchBox和ListBox)的CellTable,gwt,Gwt,如何在安全html上创建事件。正如我想对celltable中的列进行过滤一样。 所以我在表的标题处添加了搜索框。我想访问textbox并在textbox上执行一些事件 代码: final MultiSelectionModel selectionModel=new MultiSelectionModel(); CellTable cell=新的CellTable(); cell.setSelectionModel(selectionModel,DefaultSelectionEventMana
final MultiSelectionModel selectionModel=new MultiSelectionModel();
CellTable cell=新的CellTable();
cell.setSelectionModel(selectionModel,DefaultSelectionEventManager.createCheckboxManager());
Column checkColumn=新列(新CheckboxCell(真、假)){
@凌驾
公共布尔getValue(主表对象){
返回selectionModel.isSelected(对象);
}
};
cell.addColumn(checkColumn);
cell.setColumnWidth(checkColumn,20,Unit.PX);
添加(新的主表(“艺术”,“摇动”,21));
添加(新主表(“Joe”,“Black”,47));
添加(新主表(“Sam”,“PArish”,97));
TextColumn name column=新建TextColumn(){
@凌驾
公共字符串getValue(主表s){
返回s.getName();
}
};
TextColumn lastNameColumn=新建TextColumn(){
@凌驾
公共字符串getValue(主表s){
返回s.getLastName();
}
};
TextColumn ageColumn=新建TextColumn(){
@凌驾
公共字符串getValue(主表s){
返回Integer.toString(s.getAge());
}
};
//cell.addColumn(namecolumn,“Name”);
SafeHtmlBuilder=新的SafeHtmlBuilder();
builder.appendHtmlConstant(“
one
名称”);
cell.addColumn(namecolumn,builder.toSafeHtml());
SafeHtmlBuilder builder1=新的SafeHtmlBuilder();
builder1.appendHtmlConstant(“
one
Last name”);
cell.addColumn(lastNameColumn,builder1.toSafeHtml());
SafeHtmlBuilder builder2=新的SafeHtmlBuilder();
builder2.附加HtmlConstant(
一个
年龄);
cell.addColumn(ageColumn,builder2.toSafeHtml());
personCollection.addDataDisplay(单元格);
添加(搜索面板);
垂直面板。添加(单元格);
get(“errorLabelContainer”).add(verticalPanel);
最终元素nameInput=DOM.getElementById(“nameInput”);
如果(nameInput!=null)
{
Event.sinkEvents(nameInput,Event.ONCHANGE);
setEventListener(nameInput,newEventListener(){
@凌驾
公共无效onBrowserEvent(事件){
setFilter(nameInput.getInnerText());
personCollection.refresh();
}
});
}
我得到nameInput的第一个问题是null。为什么?
这只是样品。我想动态创建此列。
那么,是否可以为运行时生成的DOM元素动态添加DOM事件?您的代码片段不会显示将verticalpanel添加到页面的位置,如果在搜索DOM树后发生这种情况,则显然不起作用 如果包含输入的
SafeHtml
在从DOM树搜索页面之前被追加到页面,则会找到元素,可以从中侦听事件。下面的代码片段适合我(在加载get app的页面上,您需要带有id容器的容器)
模块加载()上的公共void{
SafeHtmlBuilder=新的SafeHtmlBuilder();
builder.appendHtmlConstant(“
one
名称”);
get(“container”).add(新的HTML(builder.toSafeHtml());
最终元素nameInput=DOM.getElementById(“nameInput”);
如果(nameInput!=null){
Event.sinkEvents(nameInput,Event.ONCHANGE);
setEventListener(nameInput,newEventListener(){
公共无效onBrowserEvent(事件){
alert(nameInput.getInnerHTML());
}
});
}
}
您的代码片段不会显示将verticalpanel添加到页面中的位置,如果在搜索dom树后发生这种情况,则显然不起作用
如果包含输入的SafeHtml
在从DOM树搜索页面之前被追加到页面,则会找到元素,可以从中侦听事件。下面的代码片段适合我(在加载get app的页面上,您需要带有id容器的容器)
模块加载()上的公共void{
SafeHtmlBuilder=新的SafeHtmlBuilder();
builder.appendHtmlConstant(“
one
名称”);
get(“container”).add(新的HTML(builder.toSafeHtml());
最终元素nameInput=DOM.getElementById(“nameInput”);
如果(nameInput!=null){
Event.sinkEvents(nameInput,Event.ONCHANGE);
setEventListener(nameInput,newEventListener(){
公共无效onBrowserEvent(事件){
alert(nameInput.getInnerHTML());
}
});
}
}
方法是将单元格
用于标题,例如TextInputCell
,并使用ValueUpdater
处理更改。方法是将单元格
用于标题,例如TextInputCell
,使用ValueUpdater
来处理更改。了解发生了什么的最好方法是研究
您尤其需要查看CustomHeaderBuilder的代码
我认为很不幸,没有包含标题搜索框的示例,每个人都必须从头开始执行此操作。了解发生了什么的最好方法是研究
您尤其需要查看CustomHeaderBuilder的代码
我认为这是不幸的,没有包括一个标题搜索框的例子,每个人都必须这样做
final MultiSelectionModel<MasterTable> selectionModel=new MultiSelectionModel<MasterTable>();
CellTable<MasterTable> cell=new CellTable<MasterTable>();
cell.setSelectionModel(selectionModel, DefaultSelectionEventManager.<MasterTable> createCheckboxManager());
Column<MasterTable, Boolean> checkColumn = new Column<MasterTable, Boolean>(new CheckboxCell(true, false)) {
@Override
public Boolean getValue(MasterTable object) {
return selectionModel.isSelected(object);
}
};
cell.addColumn(checkColumn);
cell.setColumnWidth(checkColumn, 20, Unit.PX);
personCollection.getList().add(new MasterTable("Art", "Shake", 21));
personCollection.getList().add(new MasterTable("Joe", "Black", 47));
personCollection.getList().add(new MasterTable("Sam", "PArish", 97));
TextColumn<MasterTable> namecolumn = new TextColumn<MasterTable>() {
@Override
public String getValue(MasterTable s) {
return s.getName();
}
};
TextColumn<MasterTable> lastNameColumn = new TextColumn<MasterTable>() {
@Override
public String getValue(MasterTable s) {
return s.getLastName();
}
};
TextColumn<MasterTable> ageColumn = new TextColumn<MasterTable>() {
@Override
public String getValue(MasterTable s) {
return Integer.toString(s.getAge());
}
};
// cell.addColumn(namecolumn,"Name");
SafeHtmlBuilder builder = new SafeHtmlBuilder();
builder.appendHtmlConstant("<input type=\"text\" id=\"nameInput\" /><br/><br/><select><option>one</option></select><br/><center><b>Name</b></center>");
cell.addColumn(namecolumn,builder.toSafeHtml());
SafeHtmlBuilder builder1 = new SafeHtmlBuilder();
builder1.appendHtmlConstant("<input type=\"text\"/><br/><br/><select><option>one</option></select><br/><center><b>Last name</b></center>");
cell.addColumn(lastNameColumn,builder1.toSafeHtml());
SafeHtmlBuilder builder2 = new SafeHtmlBuilder();
builder2.appendHtmlConstant("<input type=\"text\"/><br/><br/><select><option>one</option></select><br/><center><b>Age</b></center>");
cell.addColumn(ageColumn,builder2.toSafeHtml());
personCollection.addDataDisplay(cell);
verticalPanel.add(searchpanel);
verticalPanel.add(cell);
RootPanel.get("errorLabelContainer").add(verticalPanel);
final Element nameInput = DOM.getElementById("nameInput");
if(nameInput!=null)
{
Event.sinkEvents(nameInput, Event.ONCHANGE);
Event.setEventListener(nameInput, new EventListener() {
@Override
public void onBrowserEvent(Event event) {
personCollection.setFilter(nameInput.getInnerText());
personCollection.refresh();
}
});
}
public void onModuleLoad() {
SafeHtmlBuilder builder = new SafeHtmlBuilder();
builder.appendHtmlConstant("<input type=\"text\" id=\"nameInput\" /><br/><br/><select><option>one</option></select><br/><center><b>Name</b></center>");
RootPanel.get("container").add(new HTML(builder.toSafeHtml()));
final Element nameInput = DOM.getElementById("nameInput");
if (nameInput != null) {
Event.sinkEvents(nameInput, Event.ONCHANGE);
Event.setEventListener(nameInput, new EventListener() {
public void onBrowserEvent(Event event) {
Window.alert(nameInput.getInnerHTML());
}
});
}
}