我有下一个表节点。
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
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)。
答案 0 :(得分: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();
因为您正在调用它与该类相同的名称。正如我所提到的那样,数据库中没有null的东西使用一种不同的方法,比如使用0来表示没有父母的菜单项(直接在menustrip上)