0

我刚来这地方。并且有一个大问题,如果您能提供帮助,我将不胜感激。

我正在开发一个软件,它只是在访问文件中输入一些数据并在一些过滤后检索它(通过使用日期时间选择器、单选按钮、组合框......等完成)

当我想更新任何条目时,我只需编写一个选择查询并将这些值添加到相关字段。但事情是我无法更新我的组合框。我得到了其中的2个。当我尝试以下代码时,它会引发错误。

我能做些什么?请帮帮我。谢谢!

cmb_district.ValueMember = dt1.Rows[0][1].ToString();

我使用数据源属性将组合框与访问数据库连接起来。它显然具有显示和价值成员。但是当查询返回值时,它不会更新组合框并给出以下错误。

无法绑定到新值成员。参数名称:值

谢谢。请帮帮我!

4

3 回答 3

0

就像这样

cmb_district.DataSource = dt1;
cmb_district.ValueMember = "SNO"; 
cmb_district.DisplayMember = "Name";
// where SNO and Name are column names in dt1.
于 2012-05-08T05:52:59.567 回答
0

您提供的代码行不正确。组合框的名称ValueMember应设置为您希望成为所选对象的的属性或列的名称(例如,唯一 ID)。但是您正在填充字段的内容。ValueMember

当您以这种方式绑定组合框时(使用 和 的组合设置数据源DisplayMemberValueMemberSelectedValue组合框的属性将填充为ValueMember所选行的字段值。

例如,假设您有一个 DataTable,其中包含ActorIDNameBirthDate列,其中包含一些数据:

DataTable dt = new DataTable();
dt.Columns.Add("ActorID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("BirthDate", typeof(DateTime));


dt.Rows.Add(1, "Will Smith", new DateTime(1968,9,25));
dt.Rows.Add(2, "Bruce Willis", new DateTime(1955,3,19));
dt.Rows.Add(3, "Jim Carrey", new DateTime(1962, 1, 17));
dt.Rows.Add(18, "Nicole Kidman", new DateTime(1967,6,20));

ComboBox cb = new ComboBox();
cb.DropDownStyle = ComboBoxStyle.DropDownList;
cb.Location = new Point(20, 100);
cb.Width = 100;

cb.DisplayMember = "Name";  // *****
cb.ValueMember = "ActorID"; // ***** The important part
cb.DataSource = dt;

Button btn = new Button();
btn.Text = "Show ID";
btn.Location = new Point(10, 140);
btn.Click += (sender, e) =>
    {
        MessageBox.Show(cb.SelectedValue.ToString()); // **** The other important part.
    };

Form f = new Form();
f.Controls.Add(cb);
f.Controls.Add(btn);

f.ShowDialog();

当我们读取SelectedValue组合框的 时,它会为我们获取所选行的“ActorID”。

于 2012-05-09T07:51:27.090 回答
0

如果 yiu 想在绑定后选择特定值,请使用以下命令:

cmb_district.SelectedValue = dt1.Rows[0][1].ToString(); 
于 2012-05-09T08:04:57.017 回答