繁体   English   中英

如何填充listBox控件?

[英]How to fill listBox Control?

我从数据库获取数据:

        SqlCommand cmd = new SqlCommand("SELECT * FROM ItemShape", conn);

        conn.Open();

        SqlDataReader reader = cmd.ExecuteReader();

我需要用接收到的数据填充控件,例如:

         foreach (DataRow item in dt.Rows)
        {
           lbxObjects.DisplayMember = item["Shape"].ToString();
           lbxObjects.ValueMember = item["ID"].ToString();
        } 

但是我的控件在调试后是空的,上面的问题是什么?

对不起-我对ASP.NET太多了,我的第一种方法本来可以工作-但在Winforms中却没有。

您可以使用类似的方法-将数据加载到DataTable (以便您的控件具有所有可用数据)并将其绑定:

using (SqlCommand cmd = new SqlCommand("SELECT * FROM ItemShape", conn))
{
    SqlDataAdapter dap = new SqlDataAdapter(cmd);
    DataTable tblShapes = new DataTable();
    dap.Fill(tblShapes);

    // define Display and Value members
    lbxObjects.DisplayMember = "Shape";
    lbxObjects.ValueMember = "ID";

    // set the DataSource to the DataTable 
    lbxObjects.DataSource = tblShapes;
}

这样,您不必手动迭代列表-Listbox类将为您做到这一点! 您只需要定义要绑定的项目集合(通过设置DataSource ),以及将每个项目的哪个属性用作DisplayMemberValueMember

在使用它时-如果您只需要该表中的IDShape -在SELECT 说出来即可

using (SqlCommand cmd = new SqlCommand("SELECT ID, Shape FROM ItemShape", conn))
{

如果您只需要其中两列,则检索所有列是没有意义的...

使用以下代码:

while (dataReader.Read())
          {
            object ID = dataReader["ID"];
            object shape = dataReader["shape"];
            lbxObjects.Items.Add(ID.ToString() + ": " +  shape.ToString());
          }

您必须使用阅读器作为列表框的数据源

using( SqlCommand cmd = new SqlCommand("SELECT * FROM ItemShape", conn))
    {
          conn.Open();
          using(SqlDataReader reader = cmd.ExecuteReader())
          {
              if(reader.Read())
              {
                   lbxObjects.Text= item["Shape"].ToString();
                   lbxObjects.Value= item["ID"].ToString();
                   lbxObjects.DataSource=reader;
                   lbxObjects.DataBind();
              }
           }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM