2012-11-20 19 views
1

爲什麼我的ComboBox中的項目數總是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> 
+0

你是如何得到計數的? –

+1

請確保你已經綁定組合框後計數 – cbillowes

+0

ddl_contactList.Items.Count() –

回答

2

也許你應該調用DataBind()調用計數之前()。

ddl_contactList.DataBind(); 
ddl_contactList.Items.Count(); 
+0

嗯我使用'DataSourceId'所以我爲什麼要再次綁定? –

+3

DataSourceId將在頁面生命週期的'PreRender'事件中生效,並且'.Count()'調用發生在'Page_Load'之前,因此手動調用'.DataBind()'使其數據綁定早些時候,當你需要它時。或者,您可以嘗試將'.Count()'移動到'PreRender'事件 – Thymine

+0

這是否適合您?如果沒有,請讓我知道。 –

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. 
3

「EnableAutomaticLoadOnDemand =真」在這裏。屬性負載需求的所有數據的拉德組合的屬性值。所以當你點擊你的組合框時,它會加載它中的數據直到它是空的。如果您不想按需製作組合,請將該屬性設置爲false。通過這樣做,你將直接得到計數。

如果要將EnableAutomaticLoadOnDemand屬性保留爲True。您可以使用Rad Combo的ItemDataBound事件。通過使用它,您可以更改項目的文本和值屬性,並根據數據項修改其屬性集合。您可以在telerik rad combo找到更多詳細信息。讓我知道你是否想要更多細節。

相關問題