2012-07-11 81 views
1

我正在使用C#,Asp.Net 4.0和Telerik,我試圖與RadComboBox進行交互。Telerik Combobox檢查所有項目

我有一個這樣的實體數據源填充它:

<RadComboBox ID="cbMyCombo" runat="server" AutoPostBack="true" CheckBoxes="true" DataSourceID="edsMySource" DataTextField="Name" DataValueField="Number"> 

現在,它正確地從數據庫中填充的,但我的所有項目都選中。我曾嘗試檢查它們通過增加以下屬性「的CheckBox =真」,但它不工作...

我試圖在代碼中改變它的背後是這樣的:

protected override void OnLoad(EventArgs e) 
{ 
    base.OnLoad(e); 

    for (int i = 0; i < cbMyCombo.Items.Count; i++) 
    { 
     cbMyCombo.Items[i].Checked = true; 
    } 
    } 
} 

不錯的嘗試,沒有雪茄...

我有我做在頁面生命週期錯誤的時刻的感覺,但我不知道如何使它正確...

回答

4

試試這個

添加OnItemDataBound事件您RadCombobox

這樣

protected void RadComboBox1_ItemDataBound(object o, RadComboBoxItemEventArgs e) 
{ 
    e.Item.Checked = true; 
} 
+0

我剛剛發現了這個!非常感謝您的回答! – 2012-07-11 06:44:52

1

還有另一種方式來處理這種情況。如果你想要的只是 - 組合框中的所有項目都要檢查 - 那麼你也可以在客戶端進行。 RadControls擁有豐富的客戶端API支持,所以您可以在客戶端本身進行控制。

我試過一個小例子來說明這種情況。我在頁面上定義了以下radcomboboix:

<telerik:RadComboBox runat="server" CheckBoxes="true" OnClientLoad="clientLoadHandler" 
     ID="radCombo"></telerik:RadComboBox> 

我有一個名爲組合框,設置相應的複選框以真實,我添加了一個客戶端事件處理程序OnClientLoad。在這個例子中我結合來自服務器的數據源,如下:

List<string> colors = new List<string> 
     { 
      "Violet", 
      "Indigo", 
      "Blue", 
      "Green", 
      "Yellow", 
      "Orange", 
      "Red" 
     }; 
     radCombo.DataSource = colors; 
     radCombo.DataBind(); 

這裏是javascript函數:

function clientLoadHandler(sender) { 
      var combo = sender; 
      var items = combo.get_items(); 
      var itemCount = items.get_count() 
      for (var counter = 0; counter < itemCount; counter++) { 
       var item = items.getItem(counter); 
       item.set_checked(true) 
      } 
     } 

正如你可以看到,功能的發送者參數是組合框。我從組合框中取出項目並遍歷每個項目,並使用set_checked(boolean)函數設置其選中的屬性。

希望你會覺得這個信息有用。請讓我知道您對此解決方案的看法。

Lohith(Tech Evangelist,Telerik India)

+0

由於第一個答案看起來更清潔,我會去用它,但我很欣賞答案和這個解決方案!會爲了學習目的而放棄它!感謝您的回答 ! – 2012-07-11 09:28:56

+0

在我的情況下,我發現你的解決方案存在問題... 1)頁面加載並檢查所有項目,一切正常。 2)我取消選中一些項目,並驗證哪些重新加載面板和我的組合框... 3)重新加載後,頁面顯示正確的數據取決於我以前的選擇,但在我的組合框中,所有的項目再次檢查...它是由於我的組合框與我的頁面的其餘部分直接位於同一個面板中,因此它也會重新加載... – 2012-07-11 09:38:04

+0

你是對的。在頁面重新加載時,它會嘗試重新檢查所有項目。但取決於您的業務邏輯,您可以隨時調整代碼以處理已檢查或未檢查的代碼:)。我只是想讓你知道,客戶端apis也可用於radcontrols,他們有時會派上用場。 – kashyapa 2012-07-11 09:57:10