TreeView无限极动态添加及实现上下置顶排序11.29

看帖评论是美德!累……

 

 

今天又一篇了!!!

//后台(cs)代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       

        if (!IsPostBack)
            bindTree();
    }
   

    private void bindTree()
    {
        DataTable dt = this.GetTreeData();
        this.FillNode(dt, null);
    }
    private void FillNode(DataTable dt, TreeNode node)
    {
        DataView dv = new DataView(dt);
        if (node == null)    //根结点
        { 
            dv.RowFilter = "parentid='0'";  //筛选到根结点的所有子节点
        }
        else  //不是根结点
        {
            dv.RowFilter = "parentid='" + node.Value + "'";   //筛选对应节点的所有子节点
        }
        foreach (DataRowView drv in dv)   //遍历填充节点的所有子节点,如果传入的节点node为叶子节点,遍历要退出,不再进行递归
        {
            TreeNode no = new TreeNode(drv["menuname"].ToString(), drv["menuid"].ToString());
            FillNode(dt, no);  //填充no节点的子节点
            if (node == null)
            {
                this.TreeView1.Nodes.Add(no);
            }
            else
            {
                node.ChildNodes.Add(no);
            }
        }        
    }
    private DataTable GetTreeData()
    {
        string strcnn = ConfigurationManager.ConnectionStrings["treecnn"].ConnectionString;
        using (SqlConnection sqlcnn = new SqlConnection(strcnn))
        {
            SqlCommand sqlcmm = sqlcnn.CreateCommand();
            sqlcmm.CommandText = "select * from MenuTree order by parentid,menuorder";
            SqlDataAdapter da = new SqlDataAdapter(sqlcmm);
            DataSet ds = new DataSet();
            da.Fill(ds);
            return ds.Tables[0];
        }
    }
}


//排序的实现   只做了上下排序,只要理解了这些,置顶和置地就非常好做了!
//这是后台代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;

public partial class update : System.Web.UI.Page
{
    private string strCnn;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Bind();
        }
    }

    private void Bind()
    {
        strCnn = ConfigurationManager.ConnectionStrings["strCnn"].ConnectionString;
        using (SqlConnection sqlCnn = new SqlConnection(strCnn))
        {
            using (SqlCommand sqlCmm = sqlCnn.CreateCommand())
            {
                sqlCmm.CommandText = "select MenuID,MenuName from MenuTree where parentID='0'";
                SqlDataAdapter da = new SqlDataAdapter(sqlCmm);
                DataSet ds = new DataSet();
                da.Fill(ds);
                this.GridView1.DataSource = ds.Tables[0];
                this.GridView1.DataBind();
            }
        }
    }
    

    
    protected void LinkButton3_Click(object sender, EventArgs e)
    {
        strCnn = ConfigurationManager.ConnectionStrings["strCnn"].ConnectionString;
        using (SqlConnection sqlCnn=new SqlConnection(strCnn))
        {
            using (SqlCommand sqlCmm=sqlCnn.CreateCommand())
            {
                try
                {
                    
                    LinkButton btn = (LinkButton)sender;
                    string nowid = btn.CommandArgument.ToString();
                    sqlCmm.CommandText = "select menuorder from menutree where menuid='" + nowid + "'";
                    sqlCnn.Open();
                    SqlDataReader reader1 = sqlCmm.ExecuteReader();
                    int order = 0;
                    if (reader1.Read())
                    {
                        order = Convert.ToInt32(reader1[0]);
                    }
                    sqlCnn.Close();
                    sqlCmm.CommandText = "select menuid from menutree where menuorder=" + (order - 1);
                    sqlCnn.Open();
                    SqlDataReader reader2 = sqlCmm.ExecuteReader();
                    string menuid = "";
                    if (reader2.Read())
                    {
                        menuid = reader2[0].ToString();
                    }
                    sqlCnn.Close();
                    sqlCmm.CommandText = "update menutree set menuorder=" + (order - 1) + "where menuid='" + nowid + "'";
                    sqlCnn.Open();
                    sqlCmm.ExecuteNonQuery();
                    sqlCnn.Close();
                    sqlCmm.CommandText = "update menutree set menuorder=" + order + "where menuid='" + menuid + "'";
                    sqlCnn.Open();
                    sqlCmm.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                   Response.Write(ex.Message);
                }
            }
        }
        
    }
    protected void LinkButton4_Click(object sender, EventArgs e)
    {
        strCnn = ConfigurationManager.ConnectionStrings["strCnn"].ConnectionString;
        using (SqlConnection sqlCnn = new SqlConnection(strCnn))
        {
            using (SqlCommand sqlCmm = sqlCnn.CreateCommand())
            {
                try
                {                   
                    LinkButton btn = (LinkButton)sender;
                    string nowid = btn.CommandArgument.ToString();
                    sqlCmm.CommandText = "select menuorder from menutree where menuid='" + nowid + "'";
                    sqlCnn.Open();
                    SqlDataReader reader1 = sqlCmm.ExecuteReader();
                    int order = 0;
                    if (reader1.Read())
                    {
                        order = Convert.ToInt32(reader1[0]);
                    }
                    sqlCnn.Close();
                    sqlCmm.CommandText = "select menuid from menutree where menuorder=" + (order + 1);
                    sqlCnn.Open();
                    SqlDataReader reader2 = sqlCmm.ExecuteReader();
                    string menuid = "";
                    if (reader2.Read())
                    {
                        menuid = reader2[0].ToString();
                    }
                    sqlCnn.Close();
                    sqlCmm.CommandText = "update menutree set menuorder=" + (order + 1) + "where menuid='" + nowid + "'";
                    sqlCnn.Open();
                    sqlCmm.ExecuteNonQuery();
                    sqlCnn.Close();
                    sqlCmm.CommandText = "update menutree set menuorder=" + order + "where menuid='" + menuid + "'";
                    sqlCnn.Open();
                    sqlCmm.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    Response.Write(ex.Message);
                }
            }
        }
    }
}


 

这个排序我开始不怎么整的懂。是看了别人给我的一个例子加上我考虑了一下就出来这个办法了!

其实还是有小bug的,如果有高手,请不吝赐教啊啊啊!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值