问题与RadComboBox的ItemTemplate的asp:TextBox

本文关键字:TextBox asp ItemTemplate RadComboBox 问题 | 更新日期: 2023-09-27 18:08:47

我使用一个RadComboBox和一个ItemTemplate,其中包含50个TextBox控件,用户可以在其中输入信息。我动态地添加了50个TextBox控件(见下文)。当在文本框中输入信息时,似乎一切都按预期工作。但是,当我迭代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中,有两个与数据。我一定是错过了什么……

问题与RadComboBox的ItemTemplate的asp:TextBox

for循环正在检查rcbi.Text,但那是您添加到组合框....的RadComboBoxItem s的文本这与你作为ItemTemplate的一部分放置在TextBox中的文本不同。把你的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;
}