簡體   English   中英

與組合框的數據綁定不起作用

[英]data binding with combo box is not working

為什么這段代碼不起作用....

我想將組合框與來自數據庫表的名稱綁定,如下所示

      private void getcategories()
      {
        var category = (from categories in tgs.categories
                        select categories.category_Name).ToList();
        categoryCombobox.DataSource = category;

      }

        private void categoryCombobox_SelectedIndexChanged(object sender, EventArgs e)
       {
        getcategories();
      } 

我是否在將詳細信息綁定到 combobox 時做錯了什么,請提供任何對我有幫助的建議

您需要在組合框中指定要綁定的特定列。

private void getcategories()
{
    var category = (from categories in tgs.categories
                        select categories.category_Name).ToList();
    categoryCombobox.DataSource = category;

    categoryCombobox.DataBind(); //dont forget this

}

編輯-就像一個小的一般性批評,您的方法命名不佳。 我會做更多類似的事情:

private IEnumerable<string> Getcategories()
{
    return categproes.Select(c=>c.category_Name);
}

private void BindCategories()
{
    categoryCombobox.DataSource = this.GetCategories();
    categoryCombobox.DataBind();
}

private void categoryCombobox_SelectedIndexChanged(object sender, EventArgs e)
{
    BindCategories();
} 

您將它綁定在同一個 combobox 的 Selected Index changed 事件中,除非您在 combobox 中有一些項目,否則它不會觸發。

嘗試 getcategories() 中的代碼,例如 form_load 或單擊按鈕並將其從處理程序中刪除

您不想在每次索引更改時設置數據源,例如在FormLoad事件中設置一次。 否則它永遠不會被初始設置,並且可能在索引發生更改時導致無限循環,因為它將重置數據源,更改索引,這將重置數據源等。

嘗試將其更改為:

private void Form_Load(object sender, EventArgs e)
{
     LoadCategoriesCombo();
}

private void LoadCategoriesCombo()
{
    var category = (from categories in tgs.categories
                    elect categories.category_Name).ToList();

    categoryCombobox.DataSource = category;   
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM