与组合框的数据绑定不起作用

时间:2011-08-17 11:44:25

标签: c# winforms data-binding combobox

为什么这段代码不起作用....

我想将组合框与来自数据库表的名称绑定,如下所示

      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();
      } 

我做错了将细节绑定到组合框 任何对我有帮助的建议

4 个答案:

答案 0 :(得分:1)

您需要在组合框中指定要绑定的某个列。

答案 1 :(得分:0)

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();
} 

答案 2 :(得分:0)

您在相同组合框的选定索引更改事件中绑定它,除非您在组合框中有一些项目,否则不会触发。

在其他地方尝试getcategories()中的代码,例如form_load或单击按钮并将其从处理程序中删除

答案 3 :(得分:0)

您不希望在索引更改的每个时间设置数据源,例如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;   
}