用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c#代码库

树节点处理改良

2015-06-17 作者: 莫名其妙举报

[c#]代码库

    #region 树状数据表,处理排序
    //创建finaldata表和originaldata表,做为源表和处理后的表格
    DataTable finaldata;
    DataTable originaldata;


    #region 获取表格
    /// <summary>
    /// 说明:查询数据库,获取表格
    /// 作者:yxx
    /// 时间:2013-11-12
    /// </summary>
    protected DataTable GetDataTable()
    {
        DataSet ds = Common.NoPager2("factorManagement", "", "ID,sort_parentID,sort_ID,sort_name,TreeLevel,Valided", "", "sortType=2 AND factorManagement.Valided=1");
        DataTable dt = ds.Tables[0];
        return dt;
    }
    #endregion



    //调用处理方法
    protected void HandledTable()
    {
        getdata();
        //1为产品根
        step(2);
        //删除表中第一行
        finaldata.Rows.RemoveAt(0);
    }
    //调用GetDataTable得到数据,并处理finaldata,originaldata表
    protected void getdata()
    {
        finaldata = GetDataTable().Clone();
        finaldata.Columns.Add("select", typeof(int));
        originaldata = GetDataTable();
        originaldata.Columns.Add("select", typeof(int));
    }

    //遍历过程
    protected void step(int i)
    {
        //调用GetChildNode 获取子节点信息
        DataTable child = GetChildNode(i);
        int childCount = child.Rows.Count;

        //找到本节点信息
        DataRow[] sortAdd = originaldata.Select("Valided=1 and ID='" + i + "'");
        DataRow sort = sortAdd[0];
        if (childCount == 0)
        {
            sort["select"] = 1;
        }
        else
        {
            sort["select"] = 0;
        }
        // finaldata中添加本节点
        finaldata.ImportRow((DataRow)sort);

        //如存在子节点
        if (childCount > 0)
        {
            for (int j = 0; j < child.Rows.Count; j++)
            {
                int k = Convert.ToInt16(child.Rows[j]["ID"].ToString());
                step(k); //进行递归
            }
        }

    }
    //查找子节点
    protected DataTable GetChildNode(int x)
    {
        DataRow[] sortChild = originaldata.Select("Valided=1 and sort_parentID='" + x + "'");
        DataTable dt = originaldata.Clone();
        for (int i = 0; i < sortChild.Length; i++)
        {
            dt.ImportRow((DataRow)sortChild[i]);
        }
        return dt;
    }
    #endregion


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...