老宇不老 发表于 2013-10-26 20:56:30

.net问题求助

本帖最后由 老宇不老 于 2013-10-26 22:26 编辑

导航栏制作。
代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sample02_2LevelNav.aspx.cs" Inherits="Sample02_2LevelNav" %>
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html xmlns="http://www.w3.org/1999/xhtml">
< head runat="server">
   <title></title>
   <script src="jquery-1.8.3.js" type="text/javascript"></script>
   <script type ="text/javascript">
         $(document).ready(function () {
             $("a.m0").mouseenter(function () {
               $(".smenu").hide();
               $("+.smenu", this).fadeIn(200);
             });

             $("#div_menu").mouseleave(function () {
               $(".smenu").fadeOut(200);
             });
         });
   </script>

< style type ="text/css">
   body{ margin:0px; padding:0px;}
   #div_menu { border:1px solid silver;
               background-image:url(imgs/back_head.jpg);
               background-repeat:repeat-x;
                  }
   a{ display:block; text-decoration:none; color:Gray;}
   a:hover{ color:#930;}
   a.m0{ margin:10px 0px 10px 0px; padding:0px 10px 0px 10px;}
   a.m1{ padding:10px 25px 10px 25px; font-size:12px;}
   a.m1 +a.m1 { border-top:1px dashed silver;}
   .menuset { float:left;
               }
   .menuset+.menuset a.m0
             {   border-left:1px solid silver;}
   
   .smenu { position:absolute;
            border:1px solid silver;
            border-top:none;
            background-color:RGB(251,251,251);
            display:none;   }
   
               
< /style>
< /head>

< body>
   <form id="form1" runat="server">
   <div>

   <div id="div_menu" runat="server">
         
   </div>
   
   </div>
   </form>
< /body>
< /html>

-------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.OleDb;
public partial class Sample02_2LevelNav : System.Web.UI.Page
{   string str_cnn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=";
   string str_sourcefile = "mdb\\mydb.mdb";
   OleDbConnection cnn;
   OleDbCommand cmd;
   OleDbDataReader datar;
   string str_sql;

   protected void Page_Load(object sender, EventArgs e)
   {
         //载入二级导航菜单
      makenav();
   }

   protected void makenav() {
         
         string str_conn = str_cnn + MapPath(str_sourcefile);
         cnn = new OleDbConnection(str_conn);
         cnn.Open();
         str_sql = "SELECT t_menuL0.*, t_menuL1.* FROM t_menuL1 RIGHT JOIN t_menuL0 ON t_menuL1.m1_m0id = t_menuL0.m0_id";
         cmd = new OleDbCommand(str_sql, cnn);
         datar = cmd.ExecuteReader();
         Panel pnl_menuset, pnl_submenu;
         HyperLink a_m0, a_m1;
         while (datar.Read()) {
             pnl_menuset = (Panel)div_menu.FindControl("div_menuset_" + datar["m0_id"].ToString());
             if (pnl_menuset == null) {
               pnl_menuset = new Panel(); pnl_menuset.CssClass = "menuset";
               pnl_menuset.ID = "div_menuset_" + datar["m0_id"].ToString();
               div_menu.Controls.Add(pnl_menuset);
             }
             pnl_menuset = (Panel)div_menu.FindControl("div_menuset_" + datar["m0_id"].ToString());


             a_m0 = (HyperLink)div_menu.FindControl("a_m0_" + datar["m0_id"].ToString());
             if (a_m0 == null) {
               a_m0 = new HyperLink(); a_m0.CssClass = "m0";
               a_m0.ID = "a_m0_" + datar["m0_id"].ToString();
               a_m0.Text = datar["m0_ttl"].ToString();
               a_m0.NavigateUrl = datar["m0_url"].ToString();
               pnl_menuset.Controls.Add(a_m0);
             }
             if (!(datar["m1_ttl"] is DBNull)) {
               pnl_submenu = (Panel)div_menu.FindControl("div_smenu_" + datar["m0_id"].ToString());
               if (pnl_submenu == null) {
                     pnl_submenu = new Panel(); pnl_submenu.CssClass = "smenu";
                     pnl_submenu.ID = "div_smenu_" + datar["m0_id"].ToString();
                     pnl_menuset.Controls.Add(pnl_submenu);
               }
                pnl_submenu = (Panel)div_menu.FindControl("div_smenu_" + datar["m0_id"].ToString());
               a_m1 = new HyperLink(); a_m1.CssClass = "m1";
               a_m1.ID = "a_m1_" + datar["m1_id"].ToString();
               a_m1.Text = datar["m1_ttl"].ToString();
               a_m1.NavigateUrl = datar["m1_url"].ToString();
               pnl_submenu.Controls.Add(a_m1);
                           
             }
         
         }
         cnn.Close();
         Panel p = new Panel();
         p.Style.Add("clear", "both");
         div_menu.Controls.Add(p);
   }


}

想知道红色的两行代码的作用。
貌似将其注释掉了也不会有问题啊~~~

sprite 发表于 2013-10-26 22:23:40

红色代码部分只是做 获取id为"div_menu"的div对象中寻找panel对象而已。

sprite 发表于 2013-10-26 22:24:47

sprite 发表于 2013-10-26 22:23 http://bbs.fishc.com/static/image/common/back.gif
红色代码部分只是做 获取id为"div_menu"的div对象中寻找panel对象而已。

我估计你是想获取div中得子div吧

老宇不老 发表于 2013-10-26 22:27:56

sprite 发表于 2013-10-26 22:23 static/image/common/back.gif
红色代码部分只是做 获取id为"div_menu"的div对象中寻找panel对象而已。

可是蓝色的代码不是已经把这个操作执行过一次了吗?为什么还要重复执行一次?

sprite 发表于 2013-10-26 22:50:41

本帖最后由 sprite 于 2013-10-26 22:52 编辑

他后面是空数据才会重复执行吧。。如果内容不为空后面就不会执行到了。。
说错了。!(datar["m1_ttl"] is DBNull) 是不为空

sprite 发表于 2013-10-26 23:04:54

sprite 发表于 2013-10-26 22:23 static/image/common/back.gif
红色代码部分只是做 获取id为"div_menu"的div对象中寻找panel对象而已。

话说同学你可以把代码稍微做一下优化。。ado访问可以封装公共类起来。以免多次用到(最好能写成读配置多数据扩展等)。后台的代码是运行在服务端的不要给服务器压力太大哦。因此后台不要写太多不必要的逻辑处理。后台可以做获取数据也可以做一些二次验证等,前端可以根据getJSON AJAX GET POST LOAD等方法获取加载数据最后写脚本或算法来实现想要的功能哈。
页: [1]
查看完整版本: .net问题求助