DevExpress ASPXGridView 主从表 master detail 动态绑定数据
2011-10-14 15:46
375 查看
2011-09-09 10:32
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出多个值。 http://www.jinghuazhi.com 浓缩精华 而成志 |
相关文章推荐
- DevExpress ASPXGridView 主从表 master detail 动态绑定数据
- ASPXGridView 主从表 master detail 动态绑定数据
- DevExpress的ASPxGridView中实现Master-Detail数据动态绑定
- (DevExpress2011控件教程)ASPxGridView 范例4 :ASPxGridView 行选择、多表头设计、数据导出、主表细表等功能实现
- DevExpress ASPxGridView 使用文档四:数据源
- DevExpress AspxGridView数据绑定
- DevExpress8.1 ASPxGridView保存数据的心得
- (DevExpress2011控件教程)ASPxGridView 范例1 :如何绑定数据到ASPxGridView
- DevExpress中的ASPxGridView显示Sql中数据方法
- (DevExpress2011控件教程)ASPxGridView 范例4 :ASPxGridView 行选择、多表头设计、数据导出、主表细表等功能实现
- Devexpress aspxgridview oncustomcallback 无刷新更新数据
- DevExpress中通过数据的Row Index 或 值 取得 GridView的RowHandle
- DevExpress ASPxGridView中的进度条列只能显示整数百分比
- ASPxGridview使用总结(DEVExpress)
- aspxgridview export导出数据,把true显示成‘是’
- ASPxGridView 排序、分页、加载数据必需的三个函数
- ASPXGridView 数据分页设置
- (转载)DevExpress ASPxGridView 使用文档一:概述
- DevExpress ASPxGridView 使用文档三:编辑
- C# DevExpress 的gridControl或gridView数据导出失败解决方法