我正在开发一个允许用户输入/编辑多个记录的asp.net页面。我正在使用Repeater控件来显示每条记录的输入字段。我想要一个“添加”按钮,单击该按钮时,插入一组新的空白输入字段。用户应该能够输入新记录,然后多次单击“添加”按钮并继续添加新记录。然后,当用户单击“保存”按钮时,这些新记录将与现有记录的更改一起保存。如果用户未单击“保存”,则应丢弃这些记录,而不是将其写入数据库。
有没有办法用Repeater控件实现这个“添加”功能?
答案 0 :(得分:1)
有一个相当简单的解决方案。假设您有某种形式的View Model暂时保存用户输入的数据,您可以简单地将另一个“空白”ViewModel添加到转发器用作数据源的集合中。在保存时,您可以简单地将所有修改保存到View Model中存在的数据库中。一个可能的例子是:
protected void btnAdd_OnCommand(object sender, EventArgs e)
{
List<Item> items = (List<Item>)this.ItemRepeater.DataSource;
items.Add(new Item() { Id = -1 });
this.ItemRepeater.DataBind();
}
protected void btnSave_OnCommand(object sender, EventArgs e)
{
List<Item> items = (List<Item>)this.ItemRepeater.DataSource;
foreach (Item itm in items)
{
if (itm.Id == -1)
{
//Save New Item
}
else
{
//Update existing item
}
}
}
这里的主要警告是,您必须重新填充ItemRepeater的数据源,并使用用户所做的任何更改(您希望保留/显示)更新View模型。