问题与RadComboBox的ItemTemplate的asp:TextBox
本文关键字:TextBox asp ItemTemplate RadComboBox 问题 | 更新日期: 2023-09-27 18:08:47
我使用一个RadComboBox和一个ItemTemplate,其中包含50个TextBox控件,用户可以在其中输入信息。我动态地添加了50个TextBox控件(见下文)。当在文本框中输入信息时,似乎一切都按预期工作。但是,当我迭代textbox集合时,数据不在那里。下面是我的代码:
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中,有两个与数据。我一定是错过了什么……
for循环正在检查rcbi.Text
,但那是您添加到组合框....的RadComboBoxItem
s的文本这与你作为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;
}