将文本从数据库 C# DataColumnCollection 返回到按钮

Returning text to a button from a database C# DataColumnCollection

我正在尝试构建一个 POS 系统,我目前有一个访问数据库,它将我所有的菜单 items 存储为字符串。 我希望按钮(存储在数组中)显示此文本。

目前我的算法适用于数据库中的单个项目,没有问题,但是当我增加条目数量时,我得到这个错误:

奇怪的是,据我所知,dr[count].ToString(); returns 是正确的数据。

这是我的代码:

    private void main_Click(object sender, EventArgs e)
    {
        Database db = new Database();
        DataRowCollection dra = db.ReturnDataRowCollection("SELECT itemname FROM menuitems WHERE Category = 'main'");
        int count = 0;
        foreach (DataRow dr in dra)
        {
            btns[count].Text = dr[count].ToString();
            btns[count].Visible = true;
            count++;
        }
    }

starter 和 main 的代码完全相同。

作为参考,这是我的 Access 数据库的屏幕截图:

试试这个:

private void main_Click(object sender, EventArgs e)
    {
        Database db = new Database();
        DataRowCollection dra = db.ReturnDataRowCollection("SELECT itemname FROM menuitems WHERE Category = 'main'");
        int count = 0;
        foreach (DataRow dr in dra)
        {
            btns[count].Text = dr["itemname"].ToString();
            btns[count].Visible = true;
            count++;
        }
    }

据我了解,您的所有按钮文本都存储在同一列中。只有行数不同。所以这段代码应该可以工作。请试试这个,让我知道它是否有效......

IndexOutOfRangeException 当您尝试使用位于超出范围的索引处的元素时抛出。您需要确保 btns[count]dr[count] 都已定义。我相信您的问题出在 dr[count],因为您试图在位于 count 索引的每一行中找到该元素。除非每行中的按钮位于具有该行索引的列中,否则这就是您遇到问题的地方。我相信您所有的按钮都位于同一列中。