如何使用Repeater';从字典中检索值;s项目索引

本文关键字:检索 索引 项目 Repeater 何使用 字典 | 更新日期: 2023-09-27 18:22:13

我得到了一个需要修改的页面,它有一个带有ItemTemplate的Repeater,其中包含用于输入个人地址的字段。每个地址字段看起来都像这个

<input type="text" id="line1<%# ((RepeaterItem)Container).ItemIndex + 1%>" 
    name="line1<%# ((RepeaterItem)Container).ItemIndex + 1%>" />

您可以看到,我们正在将中继器的ItemIndex附加到文本框的html id和name字段的末尾。

在Code-behind中,我们有一个名为DataProxy的类,它基本上是一个基于Request.Params构建的字典,我们通常使用它来用用户输入的内容重新填充表单。例如,他们把数据放在表格上,提交它,但验证失败,因为有几个字段是空的,但我们想重新填充他们之前输入的内容。我们会这样做:

<input type="text" name="myTextBox" id="myTextBox" 
    value="<%: DataProxy["myTextBox"].ToString() %>" />

通常情况下,这很好,但它在这个中继器中不起作用,我相信这是因为中继器的DataBind发生在我们已经在DataProxy字典中搜索了我们的值之后。这是我正在使用的代码:

<input type="text" id="line1<%# ((RepeaterItem)Container).ItemIndex + 1%>" 
    name="line1<%# ((RepeaterItem)Container).ItemIndex + 1%>"
    value="<%# DataProxy["line1" + (((RepeaterItem)Container).ItemIndex + 1).ToString()] %>" />

有没有一种方法可以让我从Repeater使用ItemIndex属性访问DataProxy字典?

请注意,我的中继器正在Page_Load()中进行数据绑定。

如何使用Repeater';从字典中检索值;s项目索引

将字典转换为列表,

Dictionary<string, object> dataProxy = new Dictionary<string, object>();
List<KeyValuePair<string, object>> list = dataProxy.ToList();

但是,您可能需要确保数据经过排序,以便中继器能够一致显示。