为AspxGridView绑定嵌套数据

为AspxGridView绑定嵌套数据
创建时间:2011年11月07日 16:46  阅读次数:(4619)
分享到: 4
在AspxGridView中允许绑定嵌套数据。也就是一条数据允许再绑定该数据的下级数据。
举个很简单的例子,我们用AspxGridView来显示中国所有省份,然后我们可以为每行数据(每个省)再绑定一个下级数据,也就是每个省对应的所有市的信息,以此类推,我们还可以为每个市再绑定所有县的信息,层层级推。具体展示在页面上就是AspxGridView上的每条数据前面都有一个+号,展开+号,就可以看到下级数据了。

那么应该怎么来绑定嵌套数据呢?

首先要通过设置父AspxGridView的ShowDetailRow=true来开启嵌套。
<SettingsDetail ShowDetailRow="true" / >

子AspxGridView定义在父AspxGridView的<Templates ><DetailRow >标签中。

例:Asp.Net代码
<dxwgv:ASPxGridView ID="MasterGrid" runat="server" KeyFieldName="TaskCode" ClientInstanceName="mastergrid" DataSourceID="SqlDataSource1"  >
<SettingsDetail ShowDetailRow="true" / >
<Columns >
    <dxwgv:GridViewDataColumn Caption="任务编号" FieldName="TaskCode" / >
    <dxwgv:GridViewDataColumn Caption="任务名称" FieldName="TaskName" / >
    <dxwgv:GridViewDataColumn Caption="任务类型" FieldName="TaskType" / >
    <dxwgv:GridViewDataColumn Caption="计划工时" FieldName="PlanHours" / >
    <dxwgv:GridViewDataColumn Caption="计划开始时间" FieldName="PlanBeginDate" / >
    <dxwgv:GridViewDataColumn Caption="计划结束时间" FieldName="PlanEndDate" / >
    <dxwgv:GridViewDataColumn Caption="备注" FieldName="Remark" / >
</Columns >
<Templates >
    <DetailRow >
        <dxwgv:ASPxGridView ID="DetailGrid" runat="server" KeyFieldName="ID" ClientInstanceName="detailgrid" DataSourceID="SqlDataSource2"
         OnBeforePerformDataSelect="DetailGrid_BeforePerformDataSelect" >
            <Columns >
                <dxwgv:GridViewDataColumn Caption="ID" FieldName="ID" / >
                <dxwgv:GridViewDataColumn Caption="任务编号" FieldName="TaskCode" Visible="false" / >
                <dxwgv:GridViewDataColumn Caption="子任务名称" FieldName="ChildTaskName" / >
                <dxwgv:GridViewDataColumn Caption="执行人" FieldName="ExecuteUser" / >
                <dxwgv:GridViewDataColumn Caption="计划工时" FieldName="PlanHours" / >
                <dxwgv:GridViewDataColumn Caption="计划开始时间" FieldName="PlanBeginDate" / >
                <dxwgv:GridViewDataColumn Caption="计划结束时间" FieldName="PlanEndDate" / >
            </Columns >
            <SettingsDetail IsDetailGrid="true" / >
        </dxwgv:ASPxGridView >
    </DetailRow >
</Templates >
</dxwgv:ASPxGridView >

<asp:SqlDataSource
  id="SqlDataSource1"
  runat="server"           
  DataSourceMode="DataSet"
  ConnectionString="数据库连接字符"
  SelectCommand="查询主表数据的SQL语句" >          
</asp:SqlDataSource >

<asp:SqlDataSource
  id="SqlDataSource2"
  runat="server"           
  DataSourceMode="DataSet"
  ConnectionString="数据库连接字符"
  SelectCommand="查询从表数据的SQL语句" >
  <SelectParameters >
    <asp:SessionParameter Name="TaskCode" SessionField="TaskCode" / >
  </SelectParameters >          
</asp:SqlDataSource >


C#代码:
//子AspxGridView数据绑定
protected void DetailGrid_BeforePerformDataSelect(object sender, EventArgs e)
{
    Session["TaskCode"] = (sender as ASPxGridView).GetMasterRowKeyValue();
}


注意C#代码中的DetailGrid_BeforePerformDataSelect方法,该方法是在我们点+号展开数据时执行,GetMasterRowKeyValue()是获取主表中的主键值。因为我们在SqlDataSource2设置了SessionParameter,所以我们在DetailGrid_BeforePerformDataSelect要为SessionParameter赋值。
来源:.net学习网
说明:所有来源为 .net学习网 的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】
 

转载于:https://www.cnblogs.com/ydfq-home/p/5017542.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值