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);
                }

            }
        }

    }
原文地址:https://www.cnblogs.com/sunliyuan/p/5922432.html