使用 DataSet 绑定数据时向 ComboBox 添加默认项 - WinForm

Add default item to ComboBox while binding data with DataSet - WinForm

我在 windows 表单中绑定 ComboBox 的代码是这样的

  ddlUsers.DataSource = dsUsers.Tables[0];
  ddlUsers.ValueMember = "userID";
  ddlUsers.DisplayMember = "Username";

我想添加一个默认项作为此组合框的第一个元素,我已经尝试过类似的方法

  ddlUsers.Items.Insert(0, "-Select a user-");

但是它会抛出这样的错误。

Items collection cannot be modified when the DataSource property is set.

谁能指出实现此目标的正确方法?

您可以先将 dsUsers.Tables[0] 的内容插入到列表中,添加您的手动项目,然后将该列表绑定为数据源,而不是直接将 dsUsers.Tables[0] 绑定。

您必须以这种方式在 table 中添加行:

DataRow newRow = dataSet1.Tables[0].NewRow();

newRow["userID"] = 0;
newRow["Username"] = "-Select a User-";

dataSet1.Tables[0].Rows.Add(newRow);

然后给组合源:

 ddlUsers.DataSource = dsUsers.Tables[0];
 ddlUsers.ValueMember = "userID";
 ddlUsers.DisplayMember = "Username";

有关详细信息,请参阅 this MSDN article

在顶部插入一个新的 Row

dr = dsUsers.Tables[0].NewRow();
dr[userID] = "0";
dr[Username] = "-Select a User-";
dsUsers.Tables[0].Rows.InsertAt(dr,0);

并且您可以像往常一样设置您的来源

ddlUsers.DataSource = dsUsers.Tables[0];
ddlUsers.ValueMember = "userID";
ddlUsers.DisplayMember = "Username";

请试试这个:

DataTable dt = (DataTable)cmbControl.DataSource;
      DataRow dr = dt.NewRow();
      dr["UserName"] = "---Select User----";
      dr["UserID"] = "0";

      dt.Rows.InsertAt(dr, 0);

Insert row into datatable and use method InsertAt