如何在块中显示DataGridView行-Visual C#
我有一个程序,可以从MySQL数据库获取数据并将其显示到DataGridView。因为每一行都是可以下载的应用程序,所以我希望每一行都显示在它自己的小块中。这是我想要的一个小草图: 显示的每个框都是一行。每个部分(图标、应用程序名称、说明、下载BTN)都是一列。如何在块中显示DataGridView行-Visual C#,c#,datagridview,C#,Datagridview,我有一个程序,可以从MySQL数据库获取数据并将其显示到DataGridView。因为每一行都是可以下载的应用程序,所以我希望每一行都显示在它自己的小块中。这是我想要的一个小草图: 显示的每个框都是一行。每个部分(图标、应用程序名称、说明、下载BTN)都是一列。 有人知道怎么做吗?列表视图不支持数据绑定,而数据网格视图只显示行和列的矩阵,因此不能并排显示行数据 我建议取消您的DataGridview 相反,您将数据绑定到另一个合适的容器上,并用显示数据的UserControl填充该容器。自动滚动
有人知道怎么做吗?
列表视图不支持数据绑定
,而数据网格视图
只显示行和列的矩阵,因此不能并排显示行数据
我建议取消您的DataGridview
相反,您将数据绑定到另一个合适的容器上,并用显示数据的UserControl
填充该容器。自动滚动
FlowLayoutPanel
可能是最佳选择
因此,您创建了一个名为DataBox
的UserControl
,添加了一些标签
和按钮
,以及一个额外的构造函数,可以从数据表.DataRow
加载数据
然后编写一个加载函数,该函数为表中的每一行创建一个新的DataBox
,并将其字段加载到标签中
然后从数据发生变化的所有点调用函数,比如DataTable
的RowChanged
事件
下面是一个简单的示例类:
这是一个加载函数,用于加载表中的所有行:
void loadBoxes()
{
List<DataBox> boxes = new List<DataBox>();
foreach (DataRow row in DT.Rows)
boxes.Add(new DataBox(row) { ButtonClick = boxButton_Click } );
flowLayoutPanel1.Controls.Clear();
flowLayoutPanel1.Controls.AddRange(boxes.ToArray());
boxes.Clear();
}
当然,您也可以在数据框
类中对其右键单击进行编码
您可能需要改进其他几点,例如更新单行或使标签
将焦点发送到按钮
,从而使背景色
显示“选择”…为此,请使用列表视图
控件。。。链接:不要为此使用DataGridView
。@nelek知道如何将MySQL数据从MySQL连接器绑定到ListView吗?ListView是参差不齐的数组,不容易绑定。在CellPaint事件中,您始终可以尝试拥有绘制单元格。。
private void DT_RowChanged(object sender, DataRowChangeEventArgs e)
{
loadBoxes();
}
void loadBoxes()
{
List<DataBox> boxes = new List<DataBox>();
foreach (DataRow row in DT.Rows)
boxes.Add(new DataBox(row) { ButtonClick = boxButton_Click } );
flowLayoutPanel1.Controls.Clear();
flowLayoutPanel1.Controls.AddRange(boxes.ToArray());
boxes.Clear();
}
private void boxButton_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
DataBox box = btn.Parent as DataBox;
if (box != null)
Console.WriteLine(box.rowID + " clicked");
}