热门将数据从列表发送到Combobox

时间:2014-07-22 07:36:03

标签: 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 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]);
   }
}

2 个答案:

答案 0 :(得分:4)

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

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

使用值填充列表字符串。

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

现在您要将列表字符串绑定到 ComboBox

BindingSource bs = new BindingSource();
bs.DataSource = listOfColumns;
comboBox1.DataSource = bs;

更新:以下 DataBind()方法适用于 WebForms 。您不需要在 WinForms 中调用它。上面的代码应该有效:

comboBox1.DataBind();

希望这会对你有所帮助。

答案 1 :(得分:0)

除了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);

实际上,如果您不需要listOfColumns其他任何内容,您可以这样做:

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