【问题标题】:Insert into ListBox from a Database从数据库插入到 ListBox
【发布时间】:2013-08-13 17:59:43
【问题描述】:

问题:如何将项目从数据库中插入到列表框中?

这是我尝试过的:

    public void Fetch()
    {
        using (SqlConnection cn = new SqlConnection(UtilObj.ConnectionString()))
        {
            cn.Open();
            ExecuteFetch(cn);
            cn.Close();
        }
    }

    public void ExecuteFetch(SqlConnection cn)
    {
        using (SqlCommand cm = cn.CreateCommand())
        {
            cm.CommandType = CommandType.StoredProcedure;
            cm.CommandText = "spName";
            cm.Parameters.AddWithValue("@Param1", Param1Val);
            using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))
            {
                while (dr.Read())
                {
                    myListBox.Items.Add(dr["Color"].ToString());
                }
            }
        }
    }

当我运行代码时,这会显示一个空列表,即使它填充在调试器中。

ASPX 页面

<asp:ListBox ID="myListBox" runat="server" />

【问题讨论】:

  • 您将列表框声明为局部变量!你在不同的列表框中添加吗?
  • 为了扩展 Sriram 的问题,您为什么要在代码中定义您的 ListBox,而不是通过 Designer 将其放置在表单上?如果您不想那样做,您仍然必须将其添加到您的表单中。
  • 不,这可能是我的问题。当我删除它时,它说当前上下文中不存在名称“myListBox”。
  • 你有主窗体吗?试着说this.Controls.Add(myListBox)(假设是Winforms)
  • 是的,我将使用其他信息编辑我的问题。希望我只是在后面的代码中犯了一个简单的错误。

标签: c# sql database listbox listboxitem


【解决方案1】:

我认为您正在寻找这样的东西:-

执行你的 sp 后获取 reader 对象

SqlDataReader reader = cmd.ExecuteReader(); 

myListBox.DataSource= reader; //reader object
myListBox.DataTextField = "Color"; // the field you want to show in listbox
myListBox.DataValueField = "Color"; // the value filed behind the items. 
myListBox.Databind();

文本和值字段也可以是相同的,如果你愿意的话

就是这样。这与将项目绑定到下拉列表的方式相同。刚刚在我们最近的项目中使用过这个

希望对你有帮助

【讨论】:

  • 好吧,当我在调试器中查看它包含 1 个项目以及该项目是什么时,我正在这样做的方式显示,但是当我运行代码时它不会显示它。
  • 将此添加到您的列表框标签:- 还要检查上面的代码,我已经对其进行了编辑。我的意思是你试过了吗?
  • 对不起,还是没用。我将尝试制作一个新项目,看看我当前的项目是否只是顽固。
猜你喜欢
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多