【问题标题】:Create Recursive MenuStrip With MySQL C#使用 MySQL C# 创建递归 MenuStrip
【发布时间】:2014-11-03 11:40:36
【问题描述】:

我有下一个表节点。


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";

提前谢谢你(y)。

【问题讨论】:

  • 很不清楚你在问什么 - 详细说明你尝试了什么。

标签: c# mysql winforms menustrip


【解决方案1】:
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();

因为您将其称为与类相同的名称。正如我提到的那样,数据库中的不要为空的东西使用不同的方法,例如将 0 用于没有父项的菜单项(直接在菜单条上)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 2019-07-27
    • 1970-01-01
    相关资源
    最近更新 更多