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

时间:2015-06-12 07:49:02

标签: c# .net winforms combobox

我在Windows窗体中绑定ComboBox的代码就像这样

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

我想在这个ComboBox中添加一个deafult Item作为第一个元素,我尝试过这样的事情

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

但它会抛出这样的错误。

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

有人能指出正确的方法来实现这个目标吗?

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

请试试这个:

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

      dt.Rows.InsertAt(dr, 0);
  
    

将行插入数据表并使用方法InsertAt

  

答案 2 :(得分:0)

您可以首先将dsUsers.Tables [0]的内容插入List,添加您的手动项目,然后将该List作为DataSource而不是dsUsers.Tables [0]直接绑定。

答案 3 :(得分:0)

在顶部插入新的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";