[英]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
),以及将每个项目的哪个属性用作DisplayMember
和ValueMember
在使用它时-如果您只需要该表中的ID
和Shape
-在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.