1

我正在使用带有 ItemTemplate 的 RadComboBox,其中包含用户可以输入信息的 50 个 TextBox 控件。我动态添加了 50 个 TextBox 控件(见下文)。当信息输入到文本框中时,似乎一切都按预期工作。但是,当我迭代 TextBoxes 的集合时,数据不存在。这是我的代码:

页面:

<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 中,也有两个带有数据。我肯定错过了什么...

4

1 回答 1

0

您的 for 循环正在检查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;
}
于 2011-09-27T06:34:31.057 回答