在dart中的每个输入字段外生成tds
这是我关于stackoverflow的第一个问题,我对dartlang完全是新手 我使用以下方法创建了8个输入字段:在dart中的每个输入字段外生成tds,dart,dart-html,Dart,Dart Html,这是我关于stackoverflow的第一个问题,我对dartlang完全是新手 我使用以下方法创建了8个输入字段: InputElement in1=新的InputElement(); in1.占位符=”№"; InputElement in2=新的InputElement(); in2.placeholder=“Name”; ... InputElement in8=新的InputElement(); in8.placeholder=“日期”; 我不知道如何使用包含这些输入字段的tds自
InputElement in1=新的InputElement();
in1.占位符=”№";
InputElement in2=新的InputElement();
in2.placeholder=“Name”;
...
InputElement in8=新的InputElement();
in8.placeholder=“日期”;
我不知道如何使用包含这些输入字段的tds自动生成行。如果我手动创建,我的代码如下所示:
InputElement in1=新的InputElement();
in1.占位符=”№";
TableCellElement cell1=新元素.td();
cell1.nodes.add(in1);
InputElement in2=新的InputElement();
in2.placeholder=“Name”;
TableCellElement cell2=新元素.td();
cell2.nodes.add(in2);
InputElement in3=新的InputElement();
in3.placeholder=“LastName”;
TableCellElement cell3=新元素.td();
cell3.nodes.add(in3);
InputElement in4=新的InputElement();
in4.placeholder=“寄存器编号”;
TableCellElement cell4=新元素.td();
cell4.nodes.add(in4);
InputElement in5=新的InputElement();
in 5.placeholder=“大学”;
TableCellElement cell5=新元素.td();
cell5.nodes.add(in5);
InputElement in6=新的InputElement();
in6.placeholder=“职业”;
TableCellElement cell6=新元素.td();
cell6.nodes.add(in6);
InputElement in7=新的InputElement();
in7.placeholder=“Grade”;
TableCellElement cell7=新元素.td();
cell7.nodes.add(in7);
InputElement in8=新的InputElement();
in8.placeholder=“日期”;
TableCellElement cell8=新元素.td();
cell8.nodes.add(in8);
TableRowElement tr1=新元素.tr();
tr1.classes.add(“表头学生”);
tr1.nodes.add(cell1);
tr1.nodes.add(cell2);
tr1.nodes.add(cell3);
tr1.nodes.add(cell4);
tr1.nodes.add(cell5);
tr1.nodes.add(cell6);
tr1.nodes.add(cell7);
tr1.nodes.add(cell8);
我不想手动创建它,因为我需要在其他具有不同列的表上创建它。我创建这些输入字段的原因是创建筛选。
请不要建议使用innerHtml,appendHtml,因为我必须使用纯dart代码创建它。
我认为可以通过制作列表和使用循环来实现,但我不知道如何实现。请帮助我!我不确定我是否正确理解您的问题,但我认为这就是您想要的
列表占位符=['№', '姓名、姓氏、注册号、大学、职业、年级、日期];
TableRowElement tr=新元素.tr()
..类。添加(“表头学生”);
占位符。forEach((ph){
tr.append(新TableCellElement()…append(新InputElement()…占位符=ph));
});
查询选择器('table')。追加(tr);
具有更多属性的示例(未测试)
列表字段=[
{'placeholder':'№', 'id':'id1','name':'name1'},
{'placeholder':'Name','id':'id2','Name':'name2'},
{‘占位符’:‘LastName’,‘id’:‘id3’,‘name’:‘name3’},
{'placeholder':'Register No','id':'id4','name':'name4'},
{'placeholder':'University','id':'id5','name':'name5'},
{‘占位符’:‘职业’,‘id’:‘id6’,‘名称’:‘名称6’},
{'placeholder':'Grade','id':'id7','name':'name7'},
{'placeholder':'Date','id':'id8','name':'name8'}];
TableRowElement tr=新元素.tr()
..类。添加(“表头学生”);
字段。forEach((f){
tr.append(新TableCellElement()…append(
新InputElement()
..占位符=f[“占位符”]
…id=f['id']
…name=f['name']
));
});
查询选择器('table')。追加(tr);
如果您的元素创建逻辑变得更复杂,我将为此创建一个函数/方法
main(){
列表字段=[
{'placeholder':'№', 'id':'id1','name':'name1'},
{'placeholder':'Name','id':'id2','Name':'name2'},
{‘占位符’:‘LastName’,‘id’:‘id3’,‘name’:‘name3’},
{'placeholder':'Register No','id':'id4','name':'name4'},
{'placeholder':'University','id':'id5','name':'name5'},
{‘占位符’:‘职业’,‘id’:‘id6’,‘名称’:‘名称6’},
{'placeholder':'Grade','id':'id7','name':'name7'},
{'placeholder':'Date','id':'id8','name':'name8'}];
TableRowElement tr=新元素.tr()
..类。添加(“表头学生”);
字段。forEach((f){
tr.append(新TableCellElement()…append(createInputElement(f));
});
查询选择器('table')。追加(tr);
}
InputElement createInputElement(映射元数据){
var ie=新的InputElement();
如果(元数据['placeholder']!=null)ie.placeholder=元数据['placeholder'];
if(metadata['id']!=null)ie.id=metadata['id'];
if(metadata['name']!=null)ie.name=metadata['name'];
//…更多元素自定义
返回ie;
}
Wow。几乎正是我想要的。但如果我想在我的输入字段中添加其他属性,如id、名称等,该怎么办?唯一可能让我感到复杂的是,如果某个字段必须更改为其他类型的字段。例如,Grade列只有[1,2,3,4]值。因此,使用下拉列表而不是输入更容易筛选表。如果它是最后一个或第一个字段,我可以手动创建它,并用您的代码附加其他字段。但如果我必须更改表中的随机字段,我想我别无选择,只能逐个手动创建:(.你有什么办法可以轻松解决这个问题吗?这也不难。请使用我的上一个版本和createInputElement()
方法。您可以向元数据中添加一个“类型”字段,或者使用一些其他标准来决定要使用的字段类型。然后在createInputElement
中添加一个if
或switch
如果(元数据['type']='dropdown'return new SelectElement()…id=元数据['id']…]),否则{return new TextInputElement()…id=metadata['id']…}必须将createInputElement
的返回类型更改为H