地址: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、怎样用编程的方法去动态控制是否呈现树形效果呢?
在gridview的rowdatabound里findcontrol这个literal
判断Text=="大项"则sql语句取大项的所有子项,并输出。至于你说的树形结构其实只有一级,只是一个上下折叠的js脚本(如果是多级树,用递归)
,要注意的是,那个+ -是图片,没一条数据前的标识也是图片,
先在页面写好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>
最后把该字符串赋值到要显示的那一列即可
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对应)
参考
也可使用gridview嵌套