RadComboBox 与 asp:TextBox ItemTemplate 的问题

发布于 2024-12-04 19:34:49 字数 1245 浏览 1 评论 0原文

我正在使用带有 ItemTemplate 的 RadComboBox,其中包含 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;
}

任何文本框中都没有任何内容。例如,如果我在 50 个文本中的 2 个中输入了文本,那么我应该在遇到的第一个文本中返回“true”。当我调试并查看集合时 - 任何文本框中都没有存储任何内容,即使在 UI 中,有两个文本框包含数据。我一定是错过了什么……

I am using a RadComboBox with an ItemTemplate that contains 50 TextBox controls that a user can enter information into. I add the 50 TextBox controls dynamically (see below). When information is entered into the textboxes, it appears that everything is working as expected. However, when I iterate the collection of TextBoxes, the data is not there. Here is my code:

aspx page:

<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>

Load textboxes:

private void LoadDropdownListItems()
{
    int itemCount = 0;
    while (itemCount < 50)
    {
        ddlListItemsQ1.Items.Add(new RadComboBoxItem());
        itemCount++;
    }                
}

Examine collection:

RadComboBox ddlListItems = (RadComboBox)FindControl("ddlListItemsQ1");

IList<RadComboBoxItem> iList = ddlListItems.Items;
foreach (RadComboBoxItem rcbi in iList)
{
    if (rcbi.Text.Length > 0)
        return true;
}

Nothing is in any of the textboxes. For example, if I've entered text into 2 of the 50, I should get a "true" returned on the first one it comes across. When I debug and look at the collection - there is nothing stored in ANY of the textboxes even though in the UI, there are two with data. I must be missing something...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鱼窥荷 2024-12-11 19:34:49

您的 for 循环正在检查 rcbi.Text,但这是您添加到组合框的 RadComboBoxItem 的文本......这与以下文本不同在作为 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;
}

Your for loop is checking rcbi.Text but that is the Text of the RadComboBoxItems that you added to the combo box....which is different than the text that is in the TextBox that you placed as part of the ItemTemplate. Change your for loop to this and it should work:

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;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文