sadier

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::
1.在*.aspx页面头加入
<%@ Register TagPrefix="DBWC" Namespace="DBauer.Web.UI.WebControls" Assembly="DBauer.Web.UI.WebControls.HierarGrid" %>

2.从工具中新建一个DBauer.Web.UI.WebControls.HierarGrid,名字为:HG1
注意以下属性:
(1)TemplateCachingBase:Tablename
(2)TemplateDataMode:Table

3.在*.cs中加入:
// 创建DataSet ds,并填入Tables[0](主表)、Tables[1](子表)
// 创建两表的关联
DataColumn dc1;
DataColumn dc2;
//Relation Author => Title
dc1 = ds.Tables[1].Columns["title_id"];
dc2 = ds.Tables[0].Columns["title_id"];
DataRelation dr = new DataRelation("Author_Title", dc1, dc2, false);
ds.Relations.Add(dr);

//绑定数据源为ds(DataSet)
HG1.DataSource = ds;
//选择其中的一个表
HG1.DataMember = ds.Tables[0].TableName;
HG1.DataBind();

//展开第一行
HG1.RowExpanded[0] = true;

4.增加TemplateSelection事件,以选择子表的显示模板(注意一定要将路径写正确!):
private void HG1_TemplateSelection(object sender, HierarGridTemplateSelectionEventArgs e)
{
e.TemplateFilename = "Templates\\1.ascx";
}

5.在子表模板1.ascx中用dataGrid绑定所需字段
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="OrderDrawOutDetail.ascx.cs" Inherits="Erp.Templates.OrderDrawOutDetail" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
<asp:DataGrid id="DataGrid1" runat="server" WIDTH="100%" BORDERCOLOR="#999999" BORDERSTYLE="None" BORDERWIDTH="1px" BACKCOLOR="White" CELLPADDING="1" AutoGenerateColumns="False">
<AlternatingItemStyle BackColor="White"></AlternatingItemStyle>
<ItemStyle ForeColor="Black" BackColor="White"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="Black" BackColor="White"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="SpeciModel" SortExpression="SpeciModel" HeaderText="商品规格"></asp:BoundColumn>
<asp:BoundColumn DataField="UnitPrice" SortExpression="UnitPrice" HeaderText="单价"></asp:BoundColumn>
<asp:BoundColumn DataField="SaleMoney" SortExpression="SaleMoney" HeaderText="金额"></asp:BoundColumn>
</Columns>
</asp:DataGrid>

6.在1.cs的初始化方法InitializeComponent()中加入(注意是this.DataBinding):
this.DataBinding += new System.EventHandler(this.DataGrid1_DataBinding);

7.在绑定函数中取出主表的DataSet,并用ds.Tables[1]来绑定
private void DataGrid1_DataBinding(object sender, System.EventArgs e)
{
DataGridItem dgi = (DataGridItem) this.BindingContainer;
DataSet ds = (DataSet) dgi.DataItem;
DataGrid1.DataSource = ds;
DataGrid1.DataMember = ds.Tables[1].TableName;
DataGrid1.DataBind();
}
posted on 2004-07-21 20:08  毛小华  阅读(888)  评论(0)    收藏  举报