从数据库中读取数据创建菜单

12 篇文章 0 订阅

 

using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;
using  System.Data.SqlClient;

namespace  WindowsForm
{
    
public partial class Form1 : Form
    
{
        
private MenuStrip mainmenu = new MenuStrip();
        
private ToolStripMenuItem file, file1;
        
private Panel p = new Panel();

        
public Form1()
        
{
            InitializeComponent();
        }

        
private void Form2_Load(object sender, EventArgs e)
        
{
            
try
            
{
                create();
                doits doits 
= new doits();
                doits.Dock 
= System.Windows.Forms.DockStyle.Fill;
                p.Controls.Clear();
                p.Controls.Add(doits);
            }

            
catch (Exception Err)
            
{
                MessageBox.Show(Err.Message);
            }

        }

        
private void create()
        
{
            DataSet ds 
= new DataSet();
            DataSet ds1 
= new DataSet();
            SqlDataAdapter da 
= new SqlDataAdapter("select * from Menu  where MenuFatherName='null'""server=.;uid=sa;pwd=;database=Data");
            da.Fill(ds);
            
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            
{
                file 
= new ToolStripMenuItem();
                file.Name 
= ds.Tables[0].Rows[i]["MenuName"].ToString();
                file.Text 
= ds.Tables[0].Rows[i]["MenuText"].ToString();
                ds1.Clear();
                SqlDataAdapter da1 
= new SqlDataAdapter("select * from Menu where MenuFatherName='" + file.Name + "'""server=.;uid=sa;pwd=;database=Data");
                da1.Fill(ds1);
                
for (int j = 0; j < ds1.Tables[0].Rows.Count; j++)
                
{
                    file1 
= new ToolStripMenuItem();
                    file1.ToolTipText 
= ds1.Tables[0].Rows[j]["ID"].ToString();
                    file1.Name 
= ds1.Tables[0].Rows[j]["MenuName"].ToString();
                    file1.Text 
= ds1.Tables[0].Rows[j]["MenuText"].ToString();
                    file1.Click 
+= new EventHandler(doit);
                    file.DropDownItems.Add(file1);
                }

                mainmenu.Items.Add(file);
            }


            file 
= new ToolStripMenuItem();
            file.Name 
= "帮助";
            file.Text 
= "帮助(&H)";
            mainmenu.Items.Add(file);

            
this.Controls.Add(mainmenu);
            
this.MainMenuStrip = mainmenu;

            p.Dock 
= System.Windows.Forms.DockStyle.Fill;
            
this.Controls.Add(p);
        }

        
private void doit(object sender, EventArgs e)
        
{
            doits doits 
= new doits();
            doits.Dock 
= System.Windows.Forms.DockStyle.Fill;
            ToolStripMenuItem items 
= (ToolStripMenuItem)sender;
            doits.StringName 
= items.ToolTipText;
            
this.Text = "XXXXXXXXXXXXX(程序)--"+items.Text;
            p.Controls.Clear();
            p.Controls.Add(doits);
        }

    }

}
PHP 通过读取数据的时间数据来生成左边的层级菜单,通常是在创建一个动态导航菜单时,比如日期范围或者按月、季度、年份组织的内容。这里有一个基本步骤: 1. **连接数据库**:首先,你需要使用 PHP 的 PDO 或者 mysqli 等函数库连接到数据库,并执行 SQL 查询来获取时间相关的数据。例如,查询所有月份的数据: ```php $query = "SELECT * FROM table_name WHERE date_column BETWEEN 'start_date' AND 'end_date'"; $result = $pdo->query($query); ``` 2. **解析数据**:获取到结果后,遍历每个记录,提取出用于构建层级的字段,比如月份、季度或者年份。 ```php $months_data = []; while ($row = $result->fetch()) { $month_name = $row['month']; // ...其他需要的层级信息... $months_data[] = [ 'name' => $month_name, // ...递归结构或其他子节点... ]; } ``` 3. **构建菜单**:使用递归或数组关联的方式构建层级菜单。根节点通常是当前的时间范围,然后根据数据库返回的数据添加子节点。 ```php function buildMenu($data) { if (empty($data)) return; foreach ($data as $item) { echo '<ul>'; echo '<li>' . $item['name'] . '</li>'; echo buildMenu($item['subnodes']); // 如果有子节点,继续递归 echo '</ul>'; } } buildMenu($months_data); ``` 4. **显示菜单**:最后,将生成的 HTML 结构插入到网页上展示给用户。 记得根据实际情况调整代码,处理可能出现的不同日期格式以及错误处理。如果你想要实时更新菜单,可能还需要考虑前端的部分交互。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值