C# 如何创建DataGridView来显示餐厅中的桌子

C# 如何创建DataGridView来显示餐厅中的桌子,c#,datagridview,datagridviewcolumn,C#,Datagridview,Datagridviewcolumn,你好,我正在设计一个餐厅自动化系统来提高自己。 我在数据库中有一个名为tables的表。 我可以获取如左datagridview所示的数据。但我 无法像在右侧datagridview上那样拆分为列 我希望我能解释 private void FrmAnaEkran_Load(object sender, EventArgs e) { VerileriGetir(); } private void VerileriGetir()

你好,我正在设计一个餐厅自动化系统来提高自己。 我在数据库中有一个名为tables的表。 我可以获取如左datagridview所示的数据。但我 无法像在右侧datagridview上那样拆分为列 我希望我能解释

  private void FrmAnaEkran_Load(object sender, EventArgs e)
    {
       
        VerileriGetir();
    }

    private void VerileriGetir()
    {
        Veritabani vt = new Veritabani();
        vt.ConnectionOpen();
        vt.SqlQuery("select * from masalar");
        DataTable dt = vt.GetDataTable();
        vt.ConnectionClose();
        List<masa> masalar = new List<masa>();
        foreach (DataRow dr in dt.Rows)
        {
            masa m = new masa();
            m.adi = dr[1].ToString();
            masa.ID = Convert.ToInt32(dr[0]);
            masalar.Add(m);
        }
        for (int i = 0; i < masalar.Count; i++)
        {
            int n = dataGridView1.Rows.Add();
            dataGridView1.Rows[n].Cells[0].Value = masalar[i].adi;
        }
    }
private void FrmAnaEkran\u加载(对象发送方,事件参数e)
{
VerileriGetir();
}
私有void VerileriGetir()
{
Veritabani vt=新Veritabani();
连接打开;
vt.SqlQuery(“从masalar中选择*);
DataTable dt=vt.GetDataTable();
连接关闭;
List masalar=新列表();
foreach(数据行dr在dt.行中)
{
masa m=新的masa();
m、 adi=dr[1].ToString();
masa.ID=Convert.ToInt32(dr[0]);
加上(m);
}
for(int i=0;i
使用分组方式:

           DataTable dt = new DataTable();
            dt.Columns.Add("Masa", typeof(string));
            dt.Rows.Add(new object[] { "Masa_1" });
            dt.Rows.Add(new object[] { "Masa_2" });
            dt.Rows.Add(new object[] { "Masa_3" });
            dt.Rows.Add(new object[] { "Masa_4" });
            dt.Rows.Add(new object[] { "Masa_5" });
            dt.Rows.Add(new object[] { "Masa_6" });
            dt.Rows.Add(new object[] { "Masa_7" });
            dt.Rows.Add(new object[] { "Masa_8" });
            dt.Rows.Add(new object[] { "Masa_9" });
            dt.Rows.Add(new object[] { "Masa_10" });
            dt.Rows.Add(new object[] { "Masa_11" });
            dt.Rows.Add(new object[] { "Masa_12" });
            dt.Rows.Add(new object[] { "Masa_13" });

            var groups = dt.AsEnumerable().Select((x, i) => new {masa = x.Field<string>("Masa"), index = i}).GroupBy(x => x.index / 4);

            DataTable dt2 = new DataTable();
            dt2.Columns.Add("Column1", typeof(string));
            dt2.Columns.Add("Column2", typeof(string));
            dt2.Columns.Add("Column3", typeof(string));
            dt2.Columns.Add("Column4", typeof(string));

            foreach(var group in groups)
            {
                DataRow newRow = dt2.Rows.Add();
                int col = 0;
                foreach(var row in group)
                {
                    newRow[col++] = row.masa;
                }
            }
DataTable dt=newdatatable();
添加(“Masa”,类型(字符串));
Add(新对象[]{“Masa_1”});
Add(新对象[]{“Masa_2”});
Add(新对象[]{“Masa_3”});
Add(新对象[]{“Masa_4”});
Add(新对象[]{“Masa_5”});
Add(新对象[]{“Masa_6”});
Add(新对象[]{“Masa_7”});
Add(新对象[]{“Masa_8”});
Add(新对象[]{“Masa_9”});
添加(新对象[]{“Masa_10”});
Add(新对象[]{“Masa_11”});
Add(新对象[]{“Masa_12”});
Add(新对象[]{“Masa_13”});
var groups=dt.AsEnumerable().Select((x,i)=>new{masa=x.Field(“masa”),index=i}).GroupBy(x=>x.index/4);
DataTable dt2=新的DataTable();
dt2.Columns.Add(“Column1”,typeof(string));
dt2.Columns.Add(“Column2”,typeof(string));
dt2.Columns.Add(“Column3”,typeof(string));
dt2.Columns.Add(“Column4”,typeof(string));
foreach(组中的var组)
{
DataRow newRow=dt2.Rows.Add();
int col=0;
foreach(组中的var行)
{
newRow[col++]=row.masa;
}
}

在网格视图中,数据将以行的形式显示,请尝试使用更适合您的情况的Listview。行…
dataGridView1.rows[n]。单元格[0]。Value=masalar[i]。adi
…只将值放入第一列…
单元格[0]
…如果希望每行填充所有四个单元格,则需要另一种机制,以便代码分配单元格[0]、单元格[1]、单元格[2]和单元格[3]。不清楚你为什么这样做。将数据源分配给网格总是比逐行添加项更好。