为什么ComboBox中的项目数始终为0,尽管此组合框的数据源包含数据!!
<div align="right" dir="rtl">
<asp:Label ID="lbl_contactListName" runat="server" Text="Menu Name :" CssClass="span"></asp:Label>
<telerik:RadComboBox ID="ddl_contactList" runat="server" AutoPostBack="True" CausesValidation="False"
CollapseDelay="0" Culture="ar-EG" ExpandDelay="0" Filter="StartsWith" ItemsPerRequest="10"
MarkFirstMatch="true" Skin="Outlook" EnableAutomaticLoadOnDemand="True" EmptyMessage="-New Menu-"
ShowMoreResultsBox="True" OnSelectedIndexChanged="ddl_contactList_SelectedIndexChanged"
EnableVirtualScrolling="True" DataTextField="list_desc" DataValueField="list_code"
DataSourceID="ObjectDataSource1" EnableViewState="true" Width="300px">
</telerik:RadComboBox>
</div>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetContactListsByDep"
TypeName="SendSMS_EmailModule.ContactList">
<SelectParameters>
<asp:SessionParameter Name="year" SessionField="year" Type="Int32" />
<asp:SessionParameter Name="main_code" SessionField="main_code" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
答案 0 :(得分:3)
这里的Rad combo“EnableAutomaticLoadOnDemand = True”的属性值。此属性按需加载所有数据。因此,当您单击组合框时,它会将数据加载到其中,直到它为空。如果您不想按需创建组合,请将该属性设为false。通过这样做,您将直接获得计数。
如果要将EnableAutomaticLoadOnDemand属性保持为True。你可以使用Rad Combo的ItemDataBound事件。通过使用它,您可以更改项目的文本和值属性,以及根据DataItem修改其属性集合
您可以在telerik rad combo找到更多详情。如果您想了解更多细节,请与我们联系。
答案 1 :(得分:2)
也许你应该在调用Count()之前调用DataBind()。
ddl_contactList.DataBind();
ddl_contactList.Items.Count();
答案 2 :(得分:2)
您是否在页面加载时将Count计为零。
如果是这种情况,那是因为页面加载事件在填充ComboBox之前命中。更简单的方法是填充页面加载本身的项目。
(此代码未经测试)
if(!Page.IsPostBack)
{
using(var context = new Entities())
{
foreach(var item in context.Employee)
{
RadComboBox1.Items.Add(new RadListBoxItem(item.Name, item.ID.ToString()));
}
}
}
//Here you can get the count.