用MySQL C#创建递归MenuStrip



我有下一个表节点。


1。子模块

  sub_id  sub_name          subid_parent
  1       Articulos         NULL
  2       Proveedores       NULL
  3       Presentaciones    1
  4       Categorias        1
  5       Subcategorias     4
  6       Pasillos          1
  7       Compras           2

2。模块选项

modoption_id modoption_name sub_id

1              Nuevo Articulo           1
2              Modificar Articulo       1
3              Nuevo Proveedor          2
4              Modificar Proveedor      2
5              Nueva Presentacion       3
6              Modificar Presentacion   3
7              Nueva Categoria          4
8              Modificar Categoria      4
9              Nueva Subcategoria       5
10             Modificar Subcategoria   5
11             Nuevo Pasillo            6
12             Modificar Pasillo        6
13             Nueva Compra             7
14             Modificar Compra         7

现在,我想创建一个类似这样的递归菜单条

Articles                                             Proveedores
   L Nuevo Articulo                                     L Nuevo Proveedor
   L Modificar Articulo                                 L Modificar Proveedor
   L Presentaciones                                     L Compras
       L Nueva Presentacion                                 L Nueva Compra
       L Modificar Presentacion                             L Modificar Compra
   L Categorias
       L Nueva Categoria
       L Modificar Categoria
       L SubCategoria
           L Nueva SubCategoria
           L Modificar SubCategoria
   L Pasillos
       L Nuevo Pasillo
       L Modificar Pasillo

这是我的密码

DataSet DataSet = new DataSet();
DataSet.Tables.Add(DataTable_SubModules); // Loaded from Database
DataSet.Tables[0].TableName = "SubModules";
DataSet.Tables.Add(DataTable_ModulesOptions); // Loaded from Database
DataSet.Tables[1].TableName = "Modules_Options";

提前谢谢你。

MenuStrip menuStrip = new MenuStrip();
List<ToolStripMenuItem> items = new List<ToolStripMenuItem>();
for(int a = 0; a< dataSet.Tables[0].Rows.Count;a++){
    ToolStripMenuItem item = new ToolStripMenuItem();
    item.Name = dataSet.Tables[0].Rows[a]["sub_name"];
    item.Text = dataSet.Tables[0].Rows[a]["sub_name"];
    items.Add(item);
    int parent = dataSet.Tables[0].Rows[a]["subid_parent"];
    if(parent == null) //this wont work btw since you cant null int, i would suggest you use 0 as no parent instead
        menuStrip.Items.Add(item);
    else
        items[parent-1].Items.Add(item);
}
for(int a = 0; a< dataSet.Tables[1].Rows.Count;a++){
    ToolStripMenuItem item = new ToolStripMenuItem();
    item.Name = dataSet.Tables[1].Rows[a]["modoption_name"];
    item.Text = dataSet.Tables[1].Rows[a]["modoption_name"];
    int parent = dataSet.Tables[1].Rows[a][" sub_id"];
    items[parent-1].Items.Add(item);
}

试试这个并更改

DataSet DataSet = new DataSet();
to 
DataSet dataSet = new DataSet();

因为您调用的名称与类的名称相同。正如我所提到的,数据库中的"不要为null"使用了一种不同的方法,比如对没有父项的菜单项使用0(直接在菜单条上)

相关内容

  • 没有找到相关文章

最新更新