【问题标题】:Error: Complex DataBinding accepts as a data source either an IList or an IListSource错误:复杂 DataBinding 接受 IList 或 IListSource 作为数据源
【发布时间】:2016-10-15 06:11:48
【问题描述】:

我正在尝试在医院进行预订,当患者选择诊所时,它应该列出所选诊所的医生姓名

我在我的项目数据集向导中的TableAdapter 中进行查询 当我在Dataset 中测试它或者我从ComboBox 向导绑定它时它工作正常 但是当我尝试使用 comboBox.DataSource 更改组合框的数据时,我得到了 这个错误:

Complex DataBinding 接受 IList 或 IListSource。

这是我的代码:

private void Reservation_Load(object sender, EventArgs e)
{
    // TODO: This line of code loads data into the 'mRMSDataSet.Departments' table. You can move, or remove it, as needed.
    this.departmentsTableAdapter.FillByCLinics(this.mRMSDataSet.Departments);
}

private void clinicNameComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    clinicDoctorsComboBox.DataSource = this.clinicDoctorsTableAdapter.FillByClinicDoctors(this.mRMSDataSet.ClinicDoctors, Convert.ToInt32(clinicNameComboBox.SelectedValue.ToString()));
    clinicNameComboBox.DisplayMember = "empName";
    clinicNameComboBox.ValueMember = "empId";
}

【问题讨论】:

  • 您应该先填写DataTable,然后将其分配给DataSource。目前您已将整数分配给DataSource

标签: c# winforms data-binding combobox


【解决方案1】:

错误是不言自明的并记录在案。当您为组合框的DataSource 属性分配一个值时,该值未实现IListIListSource 接口,您将收到ArgumentException

Complex DataBinding 接受 IList 或 IListSource。

在上面的代码中,您将Fill 方法的结果(通常是int)分配给ComboBoxDataSource。相反,您应该首先Fill DataTable,然后将DataTable 分配给控件的DataSource

this.someTableAdapter.Fill(this.someDataSet.SomeTable);
comboBox1.DataSource = this.someDataSet.SomeTable;

【讨论】:

  • 没有必要因为问一个问题而责骂这个人,这是记录在案的。这对你来说可能是不言自明的,但很明显,对提问的人来说不是。他可能已经阅读了文档并且不理解它。
  • @MikeMalter 您可能不喜欢答案的语气,但我没有看到答案中有任何粗鲁或任何改变以使其更有用的地方。答案不是责怪 OP,它只是试图指出这是一种预期的行为,错误消息中清楚地解释了这一点。此外,答案试图添加更多解释,以说明引发异常的原因以及如何解决问题。
  • @MikeMalter 看看this search resultthis one
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
相关资源
最近更新 更多