Проблема с RadComboBox с ItemTemplate asp: TextBox

Я использую RadComboBox с ItemTemplate, который содержит 50 элементов управления TextBox, в которые пользователь может вводить информацию. Я добавляю 50 элементов управления TextBox динамически (см. Ниже). Когда информация вводится в текстовые поля, кажется, что все работает, как ожидалось. Однако, когда я повторяю коллекцию TextBoxes, данных там нет. Вот мой код:

страница 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;
}

Ни в одном из текстовых полей ничего нет. Например, если я ввел текст в 2 из 50, я должен получить «истина», возвращенный для первого встретившегося текста. Когда я отлаживаю и смотрю на коллекцию - ничего не хранится в ЛЮБОМ из текстовых полей, хотя в пользовательском интерфейсе есть два с данными. Я, должно быть, что-то упускаю ...


person Earl    schedule 14.09.2011    source источник


Ответы (1)


Ваш цикл for проверяет rcbi.Text, но это текст RadComboBoxItem, который вы добавили в поле со списком .... который отличается от текста в 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;
}
person Stephen McDaniel    schedule 27.09.2011