您好我的datagridview输入错误了。 (见下图)
我希望它完全像下面的图片
所以这是我的数据库,你可以在下面看到
这是我的代码。所以我的代码生成按钮,如果我点击它。它应该在datagridview中生成适当的值。
object[] itemDetail;
object[] itemLi = itemsWS.searchItem("", "drinks", "all");
int x = 35;
int cleft = 0;
for (int i = 0; i < itemLi.Length; i++)
{
itemDetail = itemsWS.getItemInfo(itemLi[i].ToString());
Button myButton = new Button();
myButton.Tag = i;
myButton.Click += (senders, args) =>
{
var button = senders as Button;
selectedItenOutputOrderTabGrid.ColumnCount = 4;
selectedItenOutputOrderTabGrid.Columns[0].Name = "Item Code";
//selectedItenOutputOrderTabGrid.Columns[1].Name = "description SCRAP";
selectedItenOutputOrderTabGrid.Columns[1].Name = "Each";
selectedItenOutputOrderTabGrid.Columns[2].Name = "Quantity";
selectedItenOutputOrderTabGrid.Columns[3].Name = "Amount";
//this.selectedItenOutputOrderTabGrid.Columns[1].Visible = false;
string row1 = itemsWS.getItemInfo(itemLi[(int)button.Tag].ToString()).ToString();
numericPopUp numPopUp = new numericPopUp();
numPopUp.Show();
selectedItenOutputOrderTabGrid.Rows.Add(itemsWS.getItemInfo(itemLi[(int)button.Tag].ToString()));
};
myButton.Text = itemDetail[1].ToString() + "\n " + itemDetail[2].ToString();
myButton.Top = cleft * 180;
myButton.Left = 70;
myButton.Location = new Point(x, cleft);
myButton.Size = new Size(100, 60);
drinksOrderManagementTab.Controls.Add(myButton);
x += 135;
if (x >= 537)
{
x = 35;
cleft += 80;
}
}
请任何帮助将不胜感激。非常感谢你
答案 0 :(得分:0)
基本上你的行正在做你告诉它要做的事:它显示给定的项目。您的问题是,这些项目直接来自数据库并包含每一列 - 没有限制或重新排序。这就是为什么你看到行中反映的列顺序(第一个item_code,然后是描述等)。
这里最简单的方法是构建一个新数组,其中只包含您想要在行中显示的数据。像(伪代码):
object[] dbOutput = itemsWS.getItemInfo(itemLi[(int)button.Tag].ToString());
object[] items = new object[] {
dbOutput[1], //description
dbOutput[2] //sale_price
//and so on
};
selectedItenOutputOrderTabGrid.Rows.Add(items);
我非常确定有先进的技术,我个人会在您从数据库中选择数据时将其解决,但这可以解决您的问题。