正是你想要的:
http://www.denisbauer.com/ASPNETControls/HierarGrid.aspx

解决方案 »

  1.   

    也可以实现,但也麻烦,你看看下面的例子:
    <asp:datagrid id="dg_item" runat="server" CssClass="wrap1" Width="98%" DataKeyField="n_item_pk" AutoGenerateColumns="False" AllowPaging="True">
    <Columns>
    <asp:TemplateColumn HeaderText="收费项目依据(文件号)">
    <ItemStyle Width="120px" HorizontalAlign="Center"></ItemStyle>
    <ItemTemplate>
    <span id="span_item" runat="server"></span>
    </ItemTemplate>
    </asp:TemplateColumn> </Columns>
    </asp:datagrid>
    //绑定项目的datagrid数据源的函数
    private void bind_item()
    {
    //获得数据源
    wjj_item wi_item_source=new wjj_item();
    DataTable dt_item_source=(DataTable)Session["dg_item_source"];
    dg_item.DataSource=dt_item_source.DefaultView;
    dg_item.DataBind();
    //绑完数据后,增加连接数据
    wi_item_source.add_item_link_file(ref dg_item);
    }
    //增加项目依据文件链接
    public void add_item_link_file(ref DataGrid dg_resouce)
    {
    //增加项目依据文件链接
    foreach (DataGridItem dgi_item in dg_resouce.Items)
    {

    DataSet ds_span=this.search_item_file_(dg_resouce.DataKeys[dgi_item.ItemIndex].ToString(),"tb_span");
    StringBuilder sb_span_content=new StringBuilder();
    if (ds_span.Tables["tb_span"].Rows.Count!=0)
    {
    for (int i=0;i<=ds_span.Tables["tb_span"].Rows.Count-1;i++)
    {
    //增加链接<a></a> sb_span_content.AppendFormat("<a target=_blank href='show_file.aspx?type=zcfg&file_id={0}'>{1}</a><br>",
    ds_span.Tables["tb_span"].Rows[i]["n_file_pk"].ToString(),
    ds_span.Tables["tb_span"].Rows[i]["vc_file_"].ToString());
    }
    }
    ((HtmlGenericControl)(dgi_item.Cells[1].Controls[1])).InnerHtml=sb_span_content.ToString();
    }
    }看起来比较复杂,其基本的思路就是根据DataKeyField="n_item_pk"属性查找该其外键表中的记录,然后在datagrid的单元格的span中插入<a>标签。
      

  2.   

    在datagrid控件中绑定超连接控件