C# 将数据从列表发送到组合框

C# 将数据从列表发送到组合框,c#,combobox,C#,Combobox,我希望将数据从listOfColumns写入组合框,这是我的代码: connectionString = "Server=localhost;User Id=root; Password=1234; Database=db2; Pooling=false;CharSet=utf8;"; connection = new MySqlConnection(connectionString); connection.Open(); string sql = "SELECT * FROM data w

我希望将数据从listOfColumns写入组合框,这是我的代码:

connectionString = "Server=localhost;User Id=root; Password=1234; Database=db2; Pooling=false;CharSet=utf8;";
connection = new MySqlConnection(connectionString);

connection.Open();
string sql = "SELECT * FROM data where id = '"+textBox1.Text.Trim()+"'";
MySqlCommand cmd = new MySqlCommand(sql, connection);
MySqlDataReader rdr = cmd.ExecuteReader();
DataTable schema = rdr.GetSchemaTable();
Dictionary<int, String> columnNames = new Dictionary<int, string>();
int index = 0;
foreach (DataRow row in schema.Rows)
{
   columnNames.Add(index, row[schema.Columns["ColumnName"]].ToString());
   index++;
}

List<String> listOfColumns = new List<string>();

for (int i = 0; i < rdr.FieldCount; i++)
{
   var val = rdr[i];
   if ("1" == val)
   {
      /* if the value of the column is 1,
         add the column name from the dictionary */
      listOfColumns.Add(columnNames[i]);
   }
}

初始化通用列表字符串对象

List<string> listOfColumns = new List<string>();
更新:以下数据绑定方法适用于WebForms。您不需要在WinForms中调用它。上述代码应适用于:

comboBox1.DataBind();

希望这将对您有所帮助。

除了Jowie演示的数据绑定方式外,您还可以手动执行此操作:

for (int i = 0; i <= rdr.Count; i++)
{
    string value = rdr[i];
    if(value == "1")
    {
         listOfColumns.Add(value);
    }
}

foreach (string listItem in listOfColumns)
    comboBox1.Items.Add(listItem);

DataSource=listocolumns;类似这样的。我假设您已经有一个combobox,并且您正在尝试将值设置为combobox。?combobox?那为什么你有列名[i]?好的,我有所有的代码。你能理解吗?我从comboBox1.DataBind得到一些错误;错误1“System.Windows.Forms.ComboBox”不包含“DataBind”的定义,并且找不到接受“System.Windows.Forms.ComboBox”类型的第一个参数的扩展方法“DataBind”。是否缺少using指令或程序集引用?尝试不使用数据绑定行-我认为这是WPF,而不是Windows窗体。@user3802389 Yeah@ThorstenDittmar是正确的。数据绑定是用于WebForms的。因此,如果您正在开发Winforms,请删除该行。它应该可以工作。@user3802389如果我的解决方案解决了您的问题,请接受它作为答案。
comboBox1.DataBind();
for (int i = 0; i <= rdr.Count; i++)
{
    string value = rdr[i];
    if(value == "1")
    {
         listOfColumns.Add(value);
    }
}

foreach (string listItem in listOfColumns)
    comboBox1.Items.Add(listItem);
for (int i = 0; i <= rdr.Count; i++)
{
    string value = rdr[i];
    if(value == "1")
    {
         comboBox1.Items.Add(value);
    }
}