1

我有一个 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”

4

2 回答 2

1

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

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

它返回您在ValueMember.

于 2013-05-28T14:48:42.233 回答
0

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

于 2013-05-28T14:14:19.963 回答