地址:http://www.zsonline.gov.cn/zsportal/portal/media-type/html/language/zh/country/CN/user/anon/page/default.psml/js_pane/P-f8429fc41d-10001我的问题是:如何实现 “审批事项名称” 列中 “政府投资项目审批”单元格中的效果。备注:1、“审批事项名称”字段分为大项和小项,大项中包含若干子项。2、数据绑定时先判断 “审批事项名称” 字段的值,如果值为大项,那么以树形结构显示其所有子项。3、怎样用编程的方法去动态控制是否呈现树形效果呢?

解决方案 »

  1.   

    模板列里放TreeView控件来实现
      

  2.   

    根据数据,判断子项个数,然后动态生成Tab就可以了。
      

  3.   

    审批事项名称列转换为模板列,里面放一个literal用于显示大项或小项内容。绑定literal为大项或小项的值。
    在gridview的rowdatabound里findcontrol这个literal
    判断Text=="大项"则sql语句取大项的所有子项,并输出。至于你说的树形结构其实只有一级,只是一个上下折叠的js脚本(如果是多级树,用递归)
      

  4.   

    用模板列,同时在数据绑定行事件里面把那个treeview填充下应该就OK了。
      

  5.   

    在GridView1_RowCommand事件中,先获取是大项还是小项,然后再为该列赋值,值为拼凑起来的html
    ,要注意的是,那个+ -是图片,没一条数据前的标识也是图片,
    先在页面写好Js
    function control(type,line)
    {
    if(type=="show")
    {
    document.getElementById(img_show+line).style.display="none";
    document.getElementById(img_hide+line).style.display="inline";
    document.getElementById(div+line).style.display="inline";
    }
    else
    {
    document.getElementById(img_show+line).style.display="inline";
    document.getElementById(img_hide+line).style.display="none";
    document.getElementById(div+line).style.display="none";}
    }
    然后在GridView1_RowCommand事件中拼凑显示的html字符串
    例如
    <img src="+号Url" id="img_show"+该行行号 style="display:none" onclick="control('show',行号)"><img src="-号Url" id="img_hide"+行号>政府投资项目审批
    <div id="div_"+行号 onclick="control('hide',行号)" >
    数据。
    </div>
    最后把该字符串赋值到要显示的那一列即可
      

  6.   


    aspx页面gridview第2列(假设)为大小项,hf_id为表的主键字段
    <asp:Literal ID="Literal1" Text='<%#Eval("大小项字段")%>' runat="server"></asp:Literal>
    <asp:HiddenField ID="hf_id" runat="server" Value='<%#Eval("pkid") %>' />
     
     protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                Literal lbl = (Literal)e.Row.Cells[2].FindControl("Literal1");
                HiddenField hf_id = (HiddenField)e.Row.Cells[2].FindControl("HiddenField");
       //假设大小项字段的值Y为大项,N为小项
                if (lbl.Text == "Y")
                {
                   //是大项就查询
                     string sql="select column1 from table where fkid="+hf_id.Value;
                }
        else
        {

        }
            }
        }
    大致如上,首先需要知道到你的表结构,短信那里贴的不容易看出来
    审批主表
    审批事项表(应该有个外键与主表id对应)
      

  7.   

    gridview 嵌套treeview
    参考
    也可使用gridview嵌套
      

  8.   

    都不用,就用asp.net ajax中的折叠控件就行了,我做过