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

时间:2012-11-20 15:46:33

标签: asp.net combobox telerik rad-controls radcombobox

为什么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>

3 个答案:

答案 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.