这个可能很简单,但无论如何它都在这里。
我有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
}
}
答案 0 :(得分:1)
Repeater
实际上被视为只读控件。
它是最简单的内置数据绑定控件之一。
它不支持编辑,插入,删除开箱即用等操作。如果要在转发器中使用其中一个操作,则必须编写自定义代码才能完成此操作。即使使用Repeater
开箱即可进行分页和排序。
因此,在使用Repeater
控件时,没有更好的方法可以满足您的要求,因此HiddenField
是满足您要求的好方法。
但是,根据您的具体需求,您应该考虑使用另一个数据绑定控件。
例如,ListView控件也基于Repeater
等模板,但它也支持编辑,插入和删除等常见操作
ListView
控件包含用于跟踪每行ID的DataKeyNames
属性