DevExpress ASPXGridView 主从表 master detail 动态绑定数据
来源:互联网 发布:ubuntu新建文件 编辑:程序博客网 时间:2024/05/18 06:16
DevExpress 提供的ASPXGridView的matserdetail主从表的例子是SQLDataSource的,我需要动态绑定数据没法用,在网上找了一下,试验后实现如下
aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebForm2.aspx.cs" Inherits="Com.Jesus.Web.WebSite.WebForm2" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1, Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1, Version=11.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<dx:ASPxGridView ID="masterGridView" runat="server">
<Templates>
<DetailRow>
<dx:ASPxGridView ID="detailGridView" runat="server" AutoGenerateColumns="False" DataSourceID="CarDataSource"
OnBeforePerformDataSelect="detailGridView_BeforePerformDataSelect">
<Columns>
<dx:GridViewDataTextColumn FieldName="ID1" VisibleIndex="0">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="CarName" VisibleIndex="1">
</dx:GridViewDataTextColumn>
</Columns>
</dx:ASPxGridView>
</DetailRow>
</Templates>
<SettingsDetail AllowOnlyOneMasterRowExpanded="true"/>
<SettingsDetail ShowDetailRow="true" />
</dx:ASPxGridView>
</div>
<asp:ObjectDataSource ID="CarDataSource" runat="server" SelectMethod="GetMyCar" TypeName="Com.Jesus.Web.WebSite.WebForm2">
<SelectParameters>
<asp:SessionParameter Name="id" SessionField="ID123" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
</form>
</body>
</html>
cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DevExpress.Web.ASPxGridView;
using System.Data;
namespace Com.Jesus.Web.WebSite
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
masterGridView.DataSource = GetDriver();
masterGridView.KeyFieldName = "ID234";
masterGridView.DataBind();
}
//后台查询接口,返回主表数据
public DataTable GetDriver()
{
DataTable dt = new DataTable();
dt.Columns.Add("ID234");
dt.Columns.Add("CarName");
for (int i = 0; i < 10; i++)
{
DataRow dr = dt.NewRow();
dr["ID234"] = i * 10 ;
dr["CarName"] = Convert.ToString(i * 10 );
dt.Rows.Add(dr);
}
return dt;
}
protected void detailGridView_BeforePerformDataSelect(object sender, EventArgs e)
{
//降主表的主键写入Session,以便于ObjectDataSource在SELECT时调用
Session["ID123"] = (sender as ASPxGridView).GetMasterRowKeyValue();
}
public DataTable GetMyCar(int id)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID1");
dt.Columns.Add("CarName");
for (int i = 0; i < 10; i++)
{
DataRow dr = dt.NewRow();
dr["ID1"] = i * 10 + id;
dr["CarName"] = Convert.ToString(i * 10 + id);
dt.Rows.Add(dr);
}
return dt;
}
}
}
这里面有几个对应关系:
<asp:ObjectDataSource ID="CarDataSource" runat="server" SelectMethod="GetMyCar" TypeName="Com.Jesus.Web.WebSite.WebForm2">
<SelectParameters>
<asp:SessionParameter Name="id" SessionField="ID123" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
1、SelectMethod="GetMyCar" 与cs中的同名函数名称一致,至于这个方法是否是静态的倒是无所谓。
2、GetMyCar函数的参数名和类型应与 Name="id" Type="Int32" 一致,至于是否与SQL语句中的字段名相同也无所谓。
3、 Session["ID123"] = (sender as ASPxGridView).GetMasterRowKeyValue(); Session名称与SessionField="ID123" 一致
4、原理:将主表的Key值存在session里,然后通过id传递给SelectMethod,将SelectMethod函数的返回值作为数据源付给从表。
还有另外一种做法就是在主表的HTMLRowPrepared事件中逐一绑定每个从表,这样会一次访问多次数据库,除非结合分页才能减少访问量,空间和时间占用率较高。
从主表传递多个参数给SelectMethod从原理上应该不行,但可以根据主表主键select出多个值。
- DevExpress ASPXGridView 主从表 master detail 动态绑定数据
- ASPxGridView之Master-Detail
- DevExpress XtraReports报表入门教程:创建一个Master-Detail主从报表
- DevExpress 的 ASPxGridView 控件显示主从表
- DevExpress中GridControl实现主从表绑定数据
- DevExpress中GridControl实现主从表绑定数据
- DevExpress 中的gridControl1 中主从表的数据绑定
- 使用DevExpress 的 ASPxGridView 控件显示主从表
- Devexpress ASPxGridView 绑定模板列
- GridView 显示 主从表(Master-Detail)注意事项
- DevExpress控件XtraGrid的Master-Detail用法
- 为AspxGridView绑定数据
- DevExPress控件中ComboBoxEdit动态绑定数据
- DevExpress 图表控件:ChartControl 动态绑定数据
- 解决EBS FORM 无法导出主从关系(Master Detail)数据到EXCEL。
- DevExpress ASPxGridView动态添加一列按钮
- 动态绑定ASPxGridView选中状态
- Devexpress aspxgridview oncustomcallback 无刷新更新数据
- RTP如何打包H264数据
- SQL---DML---UPDATE和DELETE的指导原则
- 线程的生命周期
- DllMain相关注意事项
- 单向链表实现
- DevExpress ASPXGridView 主从表 master detail 动态绑定数据
- 微软为什么给操作系统取名叫Windows 7
- 自定义view的基本步骤和思路
- 使用dcmtk进行worklist服务的测试方法
- 外企面试--基本涵盖了所有问题【附带有答案版本】
- 更改thinkphp的缓存为Memcache
- 随机数、随机数种子
- DNS随笔2-混乱的结构
- linux下安装搜狗输入法(网上找的资料)