Проблема с RadComboBox с ItemTemplate asp: TextBox - PullRequest
1 голос
/ 14 сентября 2011

Я использую 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, я должен получить «true», возвращенный при первом обнаружении. Когда я отлаживаю и смотрю на коллекцию - в ЛЮБОМ текстовом поле ничего не хранится, хотя в пользовательском интерфейсе есть два с данными. Должно быть, я что-то упустил ...

1 Ответ

0 голосов
/ 27 сентября 2011

Ваш цикл 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;
}
...