2011-09-14 25 views
1

我正在使用RadComboBox與ItemTemplate包含50個用戶可以輸入信息的TextBox控件。我動態地添加50個TextBox控件(見下文)。當信息輸入到文本框時,看起來一切都按預期工作。但是,當我迭代TextBoxes的集合時,數據不在那裏。這裏是我的代碼:問題與RadComboBox與ASP的ItemTemplate:TextBox

aspx頁面:

<telerik:RadComboBox ID="ddlListItemsQ1" runat="server" Width="200px" ShowDropDownOnTextboxClick="true" EnableEmbeddedSkins="false" Skin="Classic" TabIndex="2" ZIndex="100" disabled="true" OnClientDropDownOpening="OnDropdownListItemsOpening"> 
    <ItemTemplate> 
     <asp:TextBox ID="txtBoxQ1" runat="server" Width="160"/> 
    </ItemTemplate> 
</telerik:RadComboBox> 

加載文本框:

private void LoadDropdownListItems() 
{ 
    int itemCount = 0; 
    while (itemCount < 50) 
    { 
     ddlListItemsQ1.Items.Add(new RadComboBoxItem()); 
     itemCount++; 
    }     
} 

檢查集合:

RadComboBox ddlListItems = (RadComboBox)FindControl("ddlListItemsQ1"); 

IList<RadComboBoxItem> iList = ddlListItems.Items; 
foreach (RadComboBoxItem rcbi in iList) 
{ 
    if (rcbi.Text.Length > 0) 
     return true; 
} 

沒有在任何文本框的。例如,如果我已將文本輸入到50中的2箇中,我會在它遇到的第一個中返回「true」。當我調試並查看集合時 - 即使在UI中,也有兩個數據存儲在任何文本框中。我必須失去了一些東西......

回答

0

您的循環檢查rcbi.Text但是這是你添加到組合框中RadComboBoxItem S的文本....這比在TextBox文本不同的是你作爲ItemTemplate的一部分放置。改變你的for循環,這應該工作:

IList<RadComboBoxItem> iList = ddlListItems.Items; 
foreach (RadComboBoxItem rcbi in iList) 
{ 
    //Find the inner textbox placed by the ItemTemplate 
    var innerTextBox = (TextBox)rcbi.FindControl("txtBoxQ1"); 

    /Check the textbox's Text property 
    if (innerTextBox.Text.Length > 0) 
     return true; 
}