1

ユーザーが情報を入力できる 50 個の TextBox コントロールを含む ItemTemplate で RadComboBox を使用しています。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;
}

テキストボックスには何もありません。たとえば、50 個のうち 2 個にテキストを入力した場合、最初に出くわしたテキストで「true」が返されるはずです。コレクションをデバッグして見ると、UIにはデータが2つありますが、テキストボックスには何も保存されていません。私は何かが欠けているに違いない...

4

1 に答える 1

0

あなたの for ループはチェックしていますrcbi.Textが、それはコンボボックスに追加した のテキストです....の一部として配置しRadComboBoxItemた にあるテキストとは異なります。for ループをこれに変更すると、動作するはずです。TextBoxItemTemplate

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 に答える