将文本从数据库 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
索引的每一行中找到该元素。除非每行中的按钮位于具有该行索引的列中,否则这就是您遇到问题的地方。我相信您所有的按钮都位于同一列中。
我正在尝试构建一个 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
索引的每一行中找到该元素。除非每行中的按钮位于具有该行索引的列中,否则这就是您遇到问题的地方。我相信您所有的按钮都位于同一列中。