我有下一个表节点。
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(直接在菜单条上)