【问题标题】:Linq-to-sql to Combobox binding (Winforms)Linq-to-sql 到 Combobox 绑定 (Winforms)
【发布时间】:2013-05-28 14:01:24
【问题描述】:

我有一个 WinForm。在这个表格中,我显示了表格行中的数据。 我有表评论和用户:

评论:{ ID(int),Text(NVarchar), UserId(int) }

用户:{ ID(int), Name(NVarChar) }

在表单中,我有 TextBox 和 Combobox。在文本框中,我不会显示评论中的“文本”(用户可以编辑此字段,数据必须保存在表中)和用户表中的名称(其中 Comments.UserId = Users.ID)。

我有以下代码:

FormDataClassesDataContext dc = new FormDataClassesDataContext(); 

_comment = (from comment in dc.Comments
                    where comment.ID == 1
                    select comment).FirstOrDefault();
_user = (from users in dc.Users
                     where users.ID == _comment.UserId
                     select users).FirstOrDefault();

textBoxComment.DataBindings.Add("Text", _comment, "Text"); // <-OK
comboBoxAssessor.DataSource = dc.Users;
comboBoxAssessor.DisplayMember = "Name";
comboBoxAssessor.ValueMember = "ID";
comboBoxAssessor.DataBindings.Add("SelectedItem", _comment, "UserId");

然后

dc.SubmitChanges();

但我变成“无法将“MyApp.Forms.User”传递给“Int32”

【问题讨论】:

    标签: c# linq-to-sql binding combobox


    【解决方案1】:

    组合框的选定item 是其数据源中的当前对象,在本例中为:User。你必须使用SelectedValue:

    comboBoxAssessor.DataBindings.Add("SelectedValue", _comment, "UserId");
    

    它返回您在ValueMember 中定义的属性的值。

    【讨论】:

      【解决方案2】:

      如果我没记错的话,SelectedItem 应该是 User 类型。然后将 Comment.UserId (int) 绑定到它。

      【讨论】:

        猜你喜欢
        • 2010-10-21
        • 2011-09-07
        • 1970-01-01
        • 1970-01-01
        • 2014-04-19
        • 2011-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多