1

为什么我的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>
4

3 回答 3

3

此处 Rad 组合“EnableAutomaticLoadOnDemand=True”的属性值。该属性按需加载所有数据。因此,当您单击组合框时,它将加载其中的数据,直到它为空。如果您不想按需组合组合,请将该属性设为 false。通过这样做,您将直接获得计数。

如果您想将该 EnableAutomaticLoadOnDemand 属性保持为 True。您可以使用 Rad Combo 的 ItemDataBound 事件。通过使用它,您可以更改 Item 的 Text 和 Value 属性以及基于 DataItem 修改其 Attributes 集合

您可以在telerik rad combo找到更多详细信息。如果您想了解更多详细信息,请告诉我。

于 2012-11-29T09:53:18.623 回答
2

您是否在页面加载时将计数设为零。

如果是这种情况,那是因为页面加载事件在 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.
于 2012-11-20T16:57:42.257 回答
2

也许您应该在调用 Count() 之前调用 DataBind()。

ddl_contactList.DataBind();
ddl_contactList.Items.Count();
于 2012-11-20T16:01:18.583 回答