引用: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);
}
}
}
}