我在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.
有人能指出正确的方法来实现这个目标吗?
答案 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";