当前位置:编程学习 > C#/ASP.NET >>

怎么在gridview中实现树状结构??最好有代码!!!谢谢呀!!!1

比如这样   gridview中这样显示
+老师                 添加
  -王无               添加
+学生                 添加
  -小儿               添加
+朋友                 添加
  -好人               添加

点添加  就是添加子节点,可以无限制添加子节点!!
大家帮忙呀!!!! --------------------编程问答-------------------- 人来呀!!!
怎么都不要分!!! --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 人来吗?
人来呀!

有高手不? --------------------编程问答-------------------- mark --------------------编程问答-------------------- 添加是到另外一个页面去添加吗?  
如果是显示数据  用一个连接查询, 搞一个隐藏层是可以这么显示出来的 --------------------编程问答-------------------- 这是不可能实现的 --------------------编程问答-------------------- 有现成的控件,网上有破解的源代码

componentart --------------------编程问答-------------------- 是到另外一个业面添加,
添加后返回 可以看见内容

表是
p_id p_name p_parentid --------------------编程问答-------------------- 这样的?
http://dotnet.aspx.cc/article/f73eeaa9-2bdc-47fd-afd2-59f2fa4897f5/read.aspx
http://dotnet.aspx.cc/Exam/GridViewNested2.aspx --------------------编程问答-------------------- 孟子大哥  我希望的是  点机后面的添加按纽
实现添加所选节点的子节点  看上去显示出来是在它的子节点呢 --------------------编程问答-------------------- 学习  帮顶 --------------------编程问答-------------------- +老师                 添加
  -王无               添加
+学生                 添加
  -小儿               添加
+朋友                 添加
  -好人               添加
点添加后就在所选择的下面显示  比较点王无后面的添加  添加后..
显示为:
+老师                 添加
  -王无               添加
   |_裤子             添加
+学生                 添加
  -小儿               添加
+朋友                 添加
  -好人               添加 --------------------编程问答-------------------- 帮顶le
--------------------编程问答-------------------- 顶顶顶呀  人来呀  急  老板就是要这种效果!!
我郁闷了!!!

帮忙呀!!!!! --------------------编程问答-------------------- 可以用JS动态添加表格行实现。 --------------------编程问答-------------------- 这个....
GIRDVIEW中实现TREEVIEW样式...不会. 

学习.关注此贴. --------------------编程问答-------------------- 怎么动态添加? --------------------编程问答-------------------- 其实也用不着用JS。使它显示树状首先用递归动态的创建表格。每条记录前面的加号或着减号可以在绑定的时候计算当前记录的节点深。根据深度显示树状。前两天刚做了个。 --------------------编程问答-------------------- 表结构如下:
DepartID  ParentDepartID  Department

WEB代码
<asp:DataList ID="DataList1" runat="server" Width="100%" OnItemDataBound="DataList1_ItemDataBound" OnItemCommand="DataList1_ItemCommand">
            <ItemTemplate>
      <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td width="60%" align="center" valign="middle" style="height: 25px"><table width="50%" height="20" border="0" cellpadding="0" cellspacing="0">
            <tr>
              <td><%# CreateBlank(DataBinder.Eval(Container, "DataItem.Depth"), DataBinder.Eval(Container, "DataItem.DepartID"))%> <%# DataBinder.Eval(Container, "DataItem.Department")%></td>
            </tr>
          </table></td>
          <td width="40%" align="center" style="height: 25px"> <a href='modify_bm.aspx?DepartID=<%#  DataBinder.Eval(Container, "DataItem.DepartID") %>'>修改</a>   <asp:LinkButton ID="LinkButton1" runat="server" CommandName="delete">删除</asp:LinkButton></td>
        </tr>
      </table>
            </ItemTemplate>
        </asp:DataList> --------------------编程问答-------------------- public DataTable myDt = new DataTable();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            BindDataList();
        }
    }

    public void BindDataList()
    {
        DataColumn DepartID = new DataColumn("DepartID", typeof(int));
        DataColumn ParentDepartID = new DataColumn("ParentDepartID",typeof(int));
        DataColumn Department = new DataColumn("Department",typeof(string));
        DataColumn Depth = new DataColumn("Depth",typeof(int));
        myDt.Columns.Add(DepartID);
        myDt.Columns.Add(ParentDepartID);
        myDt.Columns.Add(Department);
        myDt.Columns.Add(Depth);
        AddDataTable(0, GetTable());
        this.DataList1.DataKeyField = "DepartID";
        this.DataList1.DataSource = myDt;
        this.DataList1.DataBind();

    }

    public string CreateBlank(object s,object e)
    {
        int num = int.Parse(s.ToString());
        string blank = "";
        for (int i = 0; i < num; i++)
            blank += "   ";
        string imgBlank = "";
        BusinessLogic.Depart logicDepart = new BusinessLogic.Depart();
        if (logicDepart.CheckChild(Convert.ToInt32(e)) > 0)
            imgBlank = "<IMG height=11 src='../images/close1.gif' width=10>";
        else
            imgBlank = "<IMG height=11 src='../images/close.gif' width=10>";
        return blank + imgBlank;
    }

    #region
    public void AddDataTable(int ParentID, DataTable dt)
    {
        string NodeId = "DepartID";
        string ParentId = "ParentDepartID";
        string NodeName = "Department";

        //DataSet dsFlowType = myData.GetFlowTypeDS();
        DataView dvTree = new DataView(GetTable());

        //过滤ParentId,得到当前的所有子节点
        dvTree.RowFilter = ParentId + " = " + ParentID.ToString();
        foreach (DataRowView drv in dvTree)
        {
            //-----------------------------------------
            int depth = 0;
            int NodeID = Convert.ToInt32(drv[NodeId]); ;
            Depth(NodeID, ref depth);   //计算当前节点深度

            string blank = "";
            if (ParentID != 0)
            {
                for (int i = 1; i <= depth; i++)
                {
                    blank += "|-";
                }
            }
            //-----------------------------------------
            //生成行与列
            DataRow dr = myDt.NewRow();
            dr["DepartID"] = Convert.ToInt32( drv[NodeId].ToString());
            dr["ParentDepartID"] = Convert.ToInt32(drv[ParentId]);
            dr["Department"] = Convert.ToString(drv[NodeName]);
            dr["Depth"] = depth;
            myDt.Rows.Add(dr);
            AddDataTable(Int32.Parse(drv[NodeId].ToString().Trim()), dt);    //递归

        }
    }

    //计算当前节点深度
    public int Depth(int NodeID, ref int depth)
    {
        string NodeId = "DepartID";
        string ParentId = "ParentDepartID";

        //DataSet dsFlowType = myData.GetFlowTypeDS();
        DataView dvTree = new DataView(GetTable());
        //过滤ParentId,得到当前的所有父节点
        dvTree.RowFilter = NodeId + " = " + NodeID.ToString();
        foreach (DataRowView drv in dvTree)
        {
            int ID = Convert.ToInt32(drv[ParentId]);
            if (ID != 0)
            {
                depth += 1;
                Depth(ID, ref depth);    //递归
            }
        }
        return depth;
    }

    public DataTable GetTable()
    {
        BusinessLogic.Depart logicDepart = new BusinessLogic.Depart();
        DataTable dt = logicDepart.BindInformation();
        return dt;
    }
    #endregion

上面这些代码改一下也可以在DROPDOWNLIST或着LISTBOX里面显示树形了。 --------------------编程问答-------------------- 能不能把你做的打一个包发我呢? 烟鬼大哥!!!!
panqiangsuper@163.com --------------------编程问答-------------------- 发了。你自己查收看吧。 --------------------编程问答-------------------- BusinessLogic 是什么?

要命名空间? --------------------编程问答-------------------- 我的逻辑运。你把获取数据源的代码换成你自己的就行了。 --------------------编程问答-------------------- CheckChild(Convert.ToInt32(e))
BindInformation()

是两个什么方法  能发我看看吗?
下面个应该是 select *from table把  上面的我不知道 --------------------编程问答-------------------- CheckChild只是检查当前的部门是否含月子类别。这个你可以不管。

BindDataList在页面上面。第一段就是。你仔细看了再问嘛。不然我这段代码发你了也没有用。 --------------------编程问答-------------------- 我看你只能用3.0 实现了  ,2.0估计很难实现 或许不可能 --------------------编程问答-------------------- 上面有位用DATALIST实现的,或许行.
自己没做过. 代码考走学习一下了. --------------------编程问答-------------------- 在gridview中实现树状结构,
应该是不可能把 --------------------编程问答-------------------- 不错!!做个标记! --------------------编程问答-------------------- 顶一个吧 --------------------编程问答-------------------- 楼主能不能把例子也发给俺丫。。
 zengjwelcome@gmail.com
  谢谢 --------------------编程问答-------------------- 大虾,能否也给我发个,我需要实现在gridview中实现树形
我邮箱zgp56789@163.com 谢谢了 --------------------编程问答-------------------- 学习中,获益不少! --------------------编程问答-------------------- 楼主能不能把例子发给我一份 
 我的Email:wangyuqi2006@126.com
    谢谢拉 --------------------编程问答-------------------- 楼主,我也想要一份,我的Email:fengsheng_234@163.com --------------------编程问答-------------------- web
http://fbx1205.5944v.net/CMS/Soft/ShowInfo.asp?InfoID=3
form
http://blogs.msdn.com/markrideout/archive/2006/01/08/510700.aspx --------------------编程问答-------------------- 楼主帖子不错 友情帮顶 --------------------编程问答-------------------- 07年的帖子不要再回复了,楼主都已经转行了 --------------------编程问答-------------------- 楼主能不能把例子发给我一份 
我的Email:xiaotmkll@163.com 
    谢谢拉 
 
--------------------编程问答-------------------- 楼主好,不知你有没有实现啊?我现在很急很需要,能发我一份吗?邮箱:gegezhaoli@126.com --------------------编程问答-------------------- GridView 我没用过
   但是楼主这功能我都是用dhtmlxgrid实现的 --------------------编程问答-------------------- 楼主能不能把例子发给我一份  
我的Email:luoxinxianlily@163.com  
  谢谢哦。。。。  
--------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 其实还是在操作TABLE,LZ自己拼TABLE的行列吧 --------------------编程问答-------------------- 我勒个操,,07年的帖子 --------------------编程问答-------------------- 打包发我一份wangxuemeng996@126.com,谢谢 --------------------编程问答-------------------- 怎么是07年的啊?时间准确吗? --------------------编程问答-------------------- 楼主能不能把例子也发给俺呀。。 
972169943@qq.com 
谢谢 --------------------编程问答--------------------
引用楼主  的回复:
比如这样         gridview中这样显示
+老师                                                   添加
     -王无                                             添加
+学生                                                   添加
……

请问你这个等级显示是如何实现的,多谢
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,