我得到了一个我需要修改的页面,它有一个带有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()中进行数据绑定。
答案 0 :(得分:0)
将字典转换为列表
Dictionary<string, object> dataProxy = new Dictionary<string, object>();
List<KeyValuePair<string, object>> list = dataProxy.ToList();
但是,您可能希望确保对数据进行排序,以便始终显示转发器。