为什么我的组合框计数是 0



为什么我的组合框中的项目计数总是 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.

最新更新