为什么我的组合框中的项目计数总是 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>
Rad 组合的属性值 "EnableAutomaticLoadOnDemand=True" 在这里。此属性按需加载所有数据。因此,当您单击组合框时,它将在其中加载数据,直到它为空。如果您不想按需组合,请将该属性设为假。通过这样做,您将直接获得计数。
如果要将该 EnableAutomaticLoadOnDemand 属性保留为 True,则可以使用 Rad Combo 的 ItemDataBound 事件。通过使用它,您可以更改项的文本和值属性,以及基于数据项修改其属性集合
您可以在 telerik rad combbo 找到更多详细信息。如果您想了解更多详情,请告诉我。
也许你应该在调用 Count() 之前调用 DataBind()。
ddl_contactList.DataBind();
ddl_contactList.Items.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.