treevew

数据库创建实体类:

 public int NodeId { get; set; }

    public string DisplayName { get; set; }

    public string NodeURL { get; set; }

    public int DisplayOrder { get; set; }

    public int ParentNodeId { get; set; }

引入SQLhelp类:

public abstract class SqlHelper
{

//Database connection strings
public static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["office"].ConnectionString;

#region ExecuteNonQuery
/// <summary>
/// 执行sql命令
/// </summary>
/// <param name="connectionString"></param>
/// <param name="commandType"></param>
/// <param name="commandText">sql语句/参数化sql语句/存储过程名</param>
/// <param name="commandParameters"></param>
/// <returns>受影响的行数</returns>
public static int ExecuteNonQuery(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{

SqlCommand cmd = new SqlCommand();

using (SqlConnection conn = new SqlConnection(connectionString))
{
PrepareCommand(cmd, commandType, conn, commandText, commandParameters);
int val = cmd.ExecuteNonQuery();

return val;
}
}

/// <summary>
/// 执行Sql Server存储过程
/// </summary>
/// <param name="connectionString"></param>
/// <param name="spName">存储过程名</param>
/// <param name="parameterValues"></param>
/// <returns>受影响的行数</returns>
public static int ExecuteNonQuery(string connectionString, string spName, params object[] parameterValues)
{

using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand();

PrepareCommand(cmd, conn, spName, parameterValues);
int val = cmd.ExecuteNonQuery();

return val;
}
}
#endregion

#region ExecuteReader
/// <summary>
/// 执行sql命令
/// </summary>
/// <param name="connectionString"></param>
/// <param name="commandType"></param>
/// <param name="commandText"></param>
/// <param name="commandParameters"></param>
/// <returns>SqlDataReader 对象</returns>
public static SqlDataReader ExecuteReader(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{

SqlConnection conn = new SqlConnection(connectionString);
try
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, commandType, conn, commandText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

return rdr;
}
catch
{
conn.Close();
throw;
}
}

public static SqlDataReader ExecuteReader(string connectionString, string spName, params object[] parameterValues)
{
SqlConnection conn = new SqlConnection(connectionString);
try
{
SqlCommand cmd = new SqlCommand();

PrepareCommand(cmd, conn, spName, parameterValues);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

return rdr;
}
catch
{
conn.Close();
throw;
}

}
#endregion

#region ExecuteDataset


public static DataSet ExecuteDataset(string connectionString, string spName, params object[] parameterValues)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand();

PrepareCommand(cmd, conn, spName, parameterValues);

using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataSet ds = new DataSet();

da.Fill(ds);

return ds;
}
}
}


public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{

SqlCommand cmd = new SqlCommand();

PrepareCommand(cmd, commandType, conn, commandText, commandParameters);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataSet ds = new DataSet();

da.Fill(ds);

return ds;
}
}
}

#endregion

#region ExecuteScalar
/// <summary>
/// 执行Sql 语句
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="spName">Sql 语句/参数化的sql语句</param>
/// <param name="parameterValues">参数</param>
/// <returns>执行结果对象</returns>
public static object ExecuteScalar(string connectionString, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();

using (SqlConnection conn = new SqlConnection(connectionString))
{
PrepareCommand(cmd, commandType, conn, commandText, commandParameters);
object val = cmd.ExecuteScalar();

return val;
}
}

/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="connectionString">连接字符串</param>
/// <param name="spName">存储过程名</param>
/// <param name="parameterValues">存储过程参数</param>
/// <returns>执行结果对象</returns>
public static object ExecuteScalar(string connectionString, string spName, params object[] parameterValues)
{
SqlCommand cmd = new SqlCommand();

using (SqlConnection conn = new SqlConnection(connectionString))
{
PrepareCommand(cmd, conn, spName, parameterValues);
object val = cmd.ExecuteScalar();

return val;
}
}


#endregion

#region Private Method
/// <summary>
/// 设置一个等待执行的SqlCommand对象
/// </summary>
/// <param name="cmd">SqlCommand 对象,不允许空对象</param>
/// <param name="conn">SqlConnection 对象,不允许空对象</param>
/// <param name="commandText">Sql 语句</param>
/// <param name="cmdParms">SqlParameters 对象,允许为空对象</param>
private static void PrepareCommand(SqlCommand cmd, CommandType commandType, SqlConnection conn, string commandText, SqlParameter[] cmdParms)
{
//打开连接
if (conn.State != ConnectionState.Open)
conn.Open();

//设置SqlCommand对象
cmd.Connection = conn;
cmd.CommandText = commandText;
cmd.CommandType = commandType;

if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}

/// <summary>
/// 设置一个等待执行存储过程的SqlCommand对象
/// </summary>
/// <param name="cmd">SqlCommand 对象,不允许空对象</param>
/// <param name="conn">SqlConnection 对象,不允许空对象</param>
/// <param name="spName">Sql 语句</param>
/// <param name="parameterValues">不定个数的存储过程参数,允许为空</param>
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, string spName, params object[] parameterValues)
{
//打开连接
if (conn.State != ConnectionState.Open)
conn.Open();

//设置SqlCommand对象
cmd.Connection = conn;
cmd.CommandText = spName;
cmd.CommandType = CommandType.StoredProcedure;

//获取存储过程的参数
SqlCommandBuilder.DeriveParameters(cmd);

//移除Return_Value 参数
cmd.Parameters.RemoveAt(0);

//设置参数值
if (parameterValues != null)
{
for (int i = 0; i < cmd.Parameters.Count; i++)
{
cmd.Parameters[i].Value = parameterValues[i];

}
}
}
#endregion


}

web里面sql连接:

<connectionStrings>
  <add 
    name="NorthwindConnectionString" 
    connectionString="Data Source=serverName;Initial 
    Catalog=Northwind;Persist Security Info=True;User 
    ID=userName;Password=password"
    providerName="System.Data.SqlClient"
  />
</connectionStrings>

后台代码:

//定义泛型集合,作用把数据读取出来放到里面

private List<SysFun> listSysFun=new List<SysFun>();//SysFun是数据库实体类的名字

写个方法:

 

  //方法读取数据库中的数据
    private void LoadAllMenu()
    {
        string sqlStr = "select * from [SysFun] orde by [DisplayOrder] ASC";
        DataSet ds = SqlHelper.ExecuteDataset(SqlHelper.ConnectionString, CommandType.Text, sqlStr);
        foreach (DataRow dr in ds.Tables[0].Rows)//随换读取数据放到泛型集合sysfun中
        {
            SysFun sysfun = new SysFun();
            sysfun.DisplayName = dr["DisplayName"].ToString();
            sysfun.DisplayOrder = (int)dr["DisplayOrder"];
            sysfun.NodeId = (int)dr["NodeId"];
            sysfun.NodeURL = dr["NodeURL"].ToString();
            sysfun.ParentNodeId = (int)dr["ParentNodeId"];

            listSysFun.Add(sysfun);
        }
    }

在Page_Load事件中添加:

  protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            //读取数据到泛型集合当中
            LoadAllMenu();
            //设置根节点
            TreeNode root = new TreeNode("后台管理");
            root.Value = "0";
            this.tvMenu.Nodes.Add(root);
            //绑定子节点
            InitTreeByList(root);
        }
    }

写个递归方法读取子节点数据:

   private void InitTreeByList(TreeNode tn)
    {
     
        foreach (SysFun sf in listSysFun)
        {
            if (sf.ParentNodeId.ToString() == tn.Value)
            {
                TreeNode temp = new TreeNode();
             
                temp.Value = sf.NodeId.ToString();
                temp.Text = sf.DisplayName.ToString();
                temp.NavigateUrl = sf.NodeURL.ToString();
                tn.ChildNodes.Add(temp);//添加进去
                InitTreeByList(temp);//进行递归
            }
        }
    }

posted @ 2013-12-07 08:55  914556495  阅读(205)  评论(0)    收藏  举报