• ERP存储过程的调用和树形菜单的加载(四)


    引用:DAL;System.Data.SqlClient;System.Data;

    namespace CommTool
    {
        public class SqlComm
        {
    
            /// <summary>
            /// 根据指定条件,删除指定的表里面的数据
            /// </summary>
            /// <param name="tableName">指定表名</param>
            /// <param name="condition">指定条件 需要Where</param>
            /// <returns>bool</returns>
            public static bool DeleteTableByCondition(string tableName, string condition)
            {
                SqlParameter[] pars = new SqlParameter[]{
                 new SqlParameter("@tableName",tableName),
                 new SqlParameter("@condition",condition)
                };
               int count= DataBaseHelper.ExcuteSqlReturnInt("DeleteTableByCondition", CommandType.StoredProcedure, pars);
               if (count > 0)
               {
                   return true;
               }
               else
               {
                   return false;
               }
    
    
            
            }
    
            /// <summary>
            /// 通用的修改方法
            /// </summary>
            /// <param name="tableName">指定表名</param>
            /// <param name="columns">要修改的列 如" username='张三',pwd='123' "</param>
            /// <param name="conditions">修改的条件,不需要where</param>
            /// <returns>bool</returns>
            public static bool UpdateTableByCondition(string tableName, string columns, string conditions)
            {
                SqlParameter[] pars = new SqlParameter[]{
                 new SqlParameter("@tableName",tableName),
                 new SqlParameter("@columns",columns),
                 new SqlParameter("@conditions",conditions)
                    
                };
    
                int count = DataBaseHelper.ExcuteSqlReturnInt("UpdateTableByCondition", CommandType.StoredProcedure, pars);
                if (count > 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            
            }
    
            /// <summary>
            /// 通用的添加功能存储过程
            /// </summary>
            /// <param name="tbName">指定要添加的表名</param>
            /// <param name="fldName">指定要添加哪些列 如username,pwd,departmentid</param>
            /// <param name="fldValue">指定哪些列对应的值 如'张三','123',1</param>
            /// <returns>bool</returns>
            public static bool CommInsertTable(string tbName, string fldName, string fldValue)
            {
                SqlParameter[] pars = new SqlParameter[]{
                 new SqlParameter("@tbName",tbName),
                 new SqlParameter("@fldName",fldName),
                 new SqlParameter("@fldValue",fldValue)
                    
                };
    
               int count= DataBaseHelper.ExcuteSqlReturnInt("CommonInsertProc", CommandType.StoredProcedure, pars);
               if (count > 0)
               {
                   return true;
               }
               else
               {
                   return false;
               }
    
    
            }
    
            /// <summary>
            /// 根据表名查询数据
            /// </summary>
            /// <param name="tableName">要查询的表</param>
            /// <returns>dataset</returns>
            public static DataSet GetDataByTableName(string tableName)
            {
                SqlParameter[] pars = new SqlParameter[]{
                new SqlParameter("@tableName",tableName)
                };
                return DataBaseHelper.SelectSQLReturnDataSet("GetDataByTableName", CommandType.StoredProcedure, pars);
            }
    
    
            /// <summary>
            /// 查询指定表,指定列所有数据
            /// </summary>
            /// <param name="tableName">指定表名</param>
            /// <param name="columns">指定列名</param>
            /// <returns>DataSet</returns>
            public static DataSet GetDataByTableNameValue(string tableName, string columns)
            {
                SqlParameter[] pars = new SqlParameter[]{
                 new SqlParameter("@tableName",tableName),
                 new SqlParameter("@columns",columns)
                };
    
                return DataBaseHelper.SelectSQLReturnDataSet("getDataByTableNameValue", CommandType.StoredProcedure, pars);
                       
            }
    
            /// <summary>
            /// 查询指定列,指定表,指定条件的数据
            /// </summary>
            /// <param name="tableName">指定的表名</param>
            /// <param name="columns">指定列名</param>
            /// <param name="condition">指定的条件 不需要写where,直接跟条件</param>
            /// <returns>DataSet</returns>
            public static DataSet GetDataByCondition(string tableName, string columns, string condition)
            {
                SqlParameter[] pars = new SqlParameter[]{
                      new SqlParameter("@tableName",tableName),
                      new SqlParameter("@columns",columns),
                      new SqlParameter("@condition",condition)
                    };
    
                return DataBaseHelper.SelectSQLReturnDataSet("GetDataByCondition", CommandType.StoredProcedure, pars);
    
    
            }
    
            /// <summary>
            /// 通用的分页方法
            /// </summary>
            /// <param name="table">要查询的表或视图</param>
            /// <param name="coumlns">要查询的列</param>
            /// <param name="pk">主键</param>
            /// <param name="condition">查询的条件</param>
            /// <param name="pageindex">页码</param>
            /// <param name="pagesize">每页显示条数</param>
            /// <returns>DataTable</returns>
            public static DataTable getDataByPageIndex(string table, string coumlns, string pk, string condition, int pageindex, int pagesize)
            {
                SqlParameter[] pars = new SqlParameter[]{
                    new SqlParameter("@table",table),
                    new SqlParameter("@coumlns",coumlns),
                    new SqlParameter("@pk",pk),
                    new SqlParameter("@condition",condition),
                    new SqlParameter("@pageindex",pageindex),
                    new SqlParameter("@pagesize",pagesize)
                };
    
                return DataBaseHelper.SelectSQLReturnTable("getDataByPageIndex", CommandType.StoredProcedure, pars);
              
            }
    
        }
    }
    

    二:后台管理系统中常用的导航菜单设计

    1.通过静态的Ul,li标签设计

    2.通过XML文件进行配置,绑定到TREEVIEW控件

    3.通过数据库设计,绑定到TREEVIEW控件

    三:树形菜单的设计原理:

    1.查询顶级节点菜单

    2.遍历顶级菜单至树形控件

    3.查询下一级菜单绑定至顶级菜单

    四:TreeView控件的用法

    1.TreeNode:TreeView 节点对象

     2.NavigateUrl:导航

    3.ChildNodes:子节点对象

    具体的代码:

    一:添加导航

    效果:(当然有很多样式,可以自行修改)

    数据库的设计:

    代码:

      public partial class MenuLeft : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    CreateTreeVeiw();
                }
            }
    
            DataSet ds;
            DataTable dt;
            private void CreateTreeView()
            {
                ds = SqlComm.GetDataByTableName("TreeMenu");
    
            }
            
            private void CreateTreeVeiw()
            {
                ds = SqlComm.GetDataByTableName("TreeMenu");
                dt = new DataTable();
                //取出第一个值
                dt = ds.Tables[0];
                //数据视图  在dt中选择想要的数据
                DataView dv = new DataView(dt, "ParentId=0", "NodeId", DataViewRowState.CurrentRows);
                //遍历父节点
                foreach (DataRowView d in dv)
                {
                    //创建一个TreeNode对象
                    TreeNode n = new TreeNode(d["Text"].ToString(), d["Url"].ToString());
                    //指定相应的属性
                    n.NavigateUrl = d["Url"].ToString();
                    n.ImageToolTip = dt.TableName;
                    //给树形菜单赋值
                    TreeView1.Nodes.Add(n);
                    //根据父节点筛选出对应的子节点
                    dv = new DataView(dt, "ParentId='" + d["NodeId"] + "'", "NodeId", DataViewRowState.CurrentRows);
                    if (dv.Count>0)
                    {
                        CreateSubTreeView(n, dv);
                    
                    }
                }
    
            }
    
    
            /// <summary>
            /// 添加子项
            /// </summary>
            /// <param name="n"></param>
            /// <param name="dv"></param>
            private void CreateSubTreeView(TreeNode n, DataView dv)
            {
                foreach (DataRowView d in dv)
                {
                    TreeNode cn = new TreeNode(d["Text"].ToString(), d["Url"].ToString());
                    cn.NavigateUrl = d["Url"].ToString();
                    n.ChildNodes.Add(cn);
                    DataView sdv = new DataView(dt, "ParentId='" + d["NodeId"] + "'", "NodeId", DataViewRowState.CurrentRows);
                    if (sdv.Count > 0)
                    {
                        //实现了递归
                        CreateSubTreeView(cn, sdv);
                    }
    
                }
            }
    
        }
    
  • 相关阅读:
    编程实践56
    诫子篇
    编程实践58
    编程实践55
    C#Process类应该声明个什么引用空间啊 找不到类型或命名空间名称“Process”(是否缺少 using 指令或程序集引用?) 如何解决?
    课堂题目54
    jQuery学习笔记jQuery的动画
    Asp.net生成各种网页快捷方式[转贴]
    jQuery学习笔记Helloworld
    FreeTextBox配置
  • 原文地址:https://www.cnblogs.com/sunliyuan/p/5922432.html
Copyright © 2020-2023  润新知