1

このコンボボックスのデータソースにはデータがあるのに、コンボボックスのアイテム数が常に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 イベントを使用できます。これを使用すると、アイテムの Text プロパティと Value プロパティを変更したり、DataItem に基づいて Attributes コレクションを変更したりできます。

詳細については、telek rad コンボを参照してください。これについて詳しく知りたい場合はお知らせください。

于 2012-11-29T09:53:18.623 に答える
2

おそらく、Count() を呼び出す前に DataBind() を呼び出す必要があります。

ddl_contactList.DataBind();
ddl_contactList.Items.Count();
于 2012-11-20T16:01:18.583 に答える
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 に答える