2012-02-01 55 views
1

我被給了一個我需要修改的頁面,它有一個帶ItemTemplate的Repeater,它包含輸入個人地址的字段。每個地址字段看起來像這樣如何使用Repeater的ItemIndex從字典中檢索值?

<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()] %>" /> 

有沒有辦法,我可以訪問我的DataProxy字典,從直放站的ItemIndex屬性的方法嗎?

請注意,我的中繼器正在Page_Load()中進行數據綁定。

回答

0

轉換字典到列表,

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

然而,你可能會想,以確保數據的排序,以便您的中繼始終顯示。

+0

我會試試這個,但你能告訴我爲什麼把我的字典轉換成列表會對我有幫助嗎?這似乎是一個時間問題,而不是缺乏數據問題。 – kd7iwp 2012-02-01 17:41:45