在转发器控件中查找项目?

时间:2012-08-08 22:02:36

标签: c# asp.net

这个可能很简单,但无论如何它都在这里。

我有List<Object>我绑定到转发器。转发器将所有字段绑定到文本框 Id 除外。在我的网页中,每当用户添加新项目时,我都会在列表中使用唯一的Object创建一个新的Id并重新绑定我的转发器。

在我的代码中的某个点,我正在尝试从转发器中读取文本框控件并将它们放入我的List<Object>。但是,我需要访问Id字段才能知道要插入哪个List项。在我通过转发器时如何获得具体的Id

我知道我可以在转发器控件中创建一个带有Id的隐藏字段并按照这种方式进行操作,但是有更简洁的方法吗?

示例:

if (DependentRptr.Items.Count > 0)
{
    for (int count = 0; count < DependentRptr.Items.Count; count++)
    {
        int did = (form.UserId + (count + 1)); //I'm trying to get the id of this field here.
        ...get control info...

        var temp = AddedDependents.ToList().Find(p => p.Id == did); //here is where I search with the id
    }
}

1 个答案:

答案 0 :(得分:1)

Repeater实际上被视为只读控件。

它是最简单的内置数据绑定控件之一。

它不支持编辑,插入,删除开箱即用等操作。如果要在转发器中使用其中一个操作,则必须编写自定义代码才能完成此操作。即使使用Repeater开箱即可进行分页和排序。

因此,在使用Repeater控件时,没有更好的方法可以满足您的要求,因此HiddenField是满足您要求的好方法。

但是,根据您的具体需求,您应该考虑使用另一个数据绑定控件。

例如,ListView控件也基于Repeater 等模板,但它也支持编辑,插入和删除等常见操作

ListView控件包含用于跟踪每行ID的DataKeyNames属性