5

我正在开发一个允许用户输入/编辑多条记录的 asp.net 页面。我正在使用 Repeater 控件来显示每条记录的输入字段。我想要一个“添加”按钮,单击该按钮会插入一组新的空白输入字段。用户应该能够输入新记录,然后多次单击添加按钮并继续添加新记录。然后,当用户单击“保存”按钮时,这些新记录将与对现有记录的更改一起保存。如果用户没有点击保存,记录应该被丢弃并且不被写入数据库。

有没有办法用Repeater控件实现这个“添加”功能?

4

1 回答 1

1

有一个相当简单的解决方案。假设您有某种形式的视图模型临时保存用户输入的任何数据,您可以简单地向转发器用作数据源的集合添加一个额外的“空白”视图模型。保存时,您可以简单地将所有修改保存到视图模型中存在的数据库中。一个可能的例子是:

    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 的数据源。

于 2012-07-12T14:58:38.330 回答