2011-09-14 7 views
1

ユーザーが情報を入力できるTextBoxコントロールが50個入っているItemTemplateでRadComboBoxを使用しています。私は50 TextBoxコントロールを動的に追加します(下記参照)。テキストボックスに情報が入力されると、すべてが期待通りに機能しているように見えます。しかし、私がTextBoxのコレクションを反復するとき、データはそこにありません。ここに私のコードは次のとおりです。asp:TextBoxのItemTemplateを持つRadComboBoxの問題

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にはデータが2つありますが、テキストボックスのANYには何も格納されていません。私は何かが欠けている必要があります...

答えて

0

あなたのforループはRadComboBoxItemですが、これは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; 
} 
関連する問題