asp.net aspxgridview 绑定数据

来源:互联网 发布:数据采集器工作原理 编辑:程序博客网 时间:2024/06/05 18:51

.Net中还提供ObjectDataSource,可以代替SqlDataSource里提供数据。而ObjectDataSource可以和业务逻辑层相连。

     具体操作如下:

 

 Default.aspx

复制代码
 1 <%@ Page Language="C#" AutoEventWireup="True" CodeBehind="Default.aspx.cs" Inherits="webtst._Default" %>
 2 
 3 <%@ Register Assembly="DevExpress.Web.v9.3, Version=9.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
 4     Namespace="DevExpress.Web.ASPxPopupControl" TagPrefix="dx" %>
 5 
 6 <%@ Register Assembly="DevExpress.Web.ASPxGridView.v9.3, Version=9.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
 7     Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
 8 
 9 <%@ Register Assembly="DevExpress.Web.ASPxEditors.v9.3, Version=9.3.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
10     Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
11 
12 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
13 
14 <html xmlns="http://www.w3.org/1999/xhtml" >
15 <head runat="server">
16     <title></title>
17 </head>
18 <body>
19 
20     <form id="form1" runat="server">
21     <div>
22 
23         <dx:ASPxGridView ID="masterGridView" runat="server">
24         <Templates>
25         <DetailRow>
26         <%--detail表格要指定它的DataSourceID为对应的ObjectDataSource --%>
27         <dx:ASPxGridView ID="detailGridView" runat="server" AutoGenerateColumns="False" 
28                 DataSourceID="CarDataSource" 
29                 onbeforeperformdataselect="detailGridView_BeforePerformDataSelect">
30             <Columns>
31                 <dx:GridViewDataTextColumn FieldName="Id" VisibleIndex="0">
32                 </dx:GridViewDataTextColumn>
33                 <dx:GridViewDataTextColumn FieldName="CarName" VisibleIndex="1">
34                 </dx:GridViewDataTextColumn>
35             </Columns>
36             <%-- detail表格的这个属性要设置为true --%>
37             <SettingsDetail IsDetailGrid= "true" />
38         </dx:ASPxGridView>
39         </DetailRow>
40         </Templates>
41         <%-- master表格的这个属性要设置为true才能显示出detail表 --%>
42         <SettingsDetail ShowDetailRow="true" />
43         </dx:ASPxGridView>
44     </div>
45     <%-- ObjectDataSource的配置属性,指定了SELECT方法为GetMyCar函数, --%>
46     <asp:ObjectDataSource ID="CarDataSource" runat="server" 
47         SelectMethod="GetMyCar" TypeName="webtst.Car">
48         <SelectParameters>
49             <%-- 设置了一个Session["ID"]来源地参数id --%>
50             <asp:SessionParameter Name="id" SessionField="ID" Type="Int32" />
51         </SelectParameters>
52     </asp:ObjectDataSource>
53     </form>
54 </body>
55 </html>
56 
复制代码

 Default.aspx.cs

复制代码
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Data;
  4 using System.Web;
  5 using System.Web.UI;
  6 using System.Web.UI.WebControls;
  7 using DevExpress.Web.ASPxGridView;
  8 namespace webtst
  9 {
 10     public partial class _Default : System.Web.UI.Page
 11     {
 12         protected void Page_Load(object sender, EventArgs e)
 13         {
 14 
 15             masterGridView.DataSource = GetDriver();
 16             masterGridView.KeyFieldName = "Id";
 17             masterGridView.DataBind();
 18         }
 19         //后台查询接口,返回主表数据
 20         public List<Driver> GetDriver()
 21         {
 22             List<Driver> drivers = new List<Driver>();
 23             drivers.Add(new Driver(0"Li""Beijing"));
 24             drivers.Add(new Driver(1"Wang""Beijing"));
 25             drivers.Add(new Driver(2"Zhang""Beijing"));
 26             drivers.Add(new Driver(3"Zhao""Beijing"));
 27             drivers.Add(new Driver(4"Qian""Beijing"));
 28             return drivers;
 29         }
 30 
 31         protected void detailGridView_BeforePerformDataSelect(object sender, EventArgs e)
 32         {
 33             //降主表的主键写入Session,以便于ObjectDataSource在SELECT时调用
 34             Session["ID"= (sender as ASPxGridView).GetMasterRowKeyValue();
 35          }
 36         
 37     }
 38     //Master类
 39     public class Driver
 40     {
 41         private int _Id;
 42         public int Id
 43         {
 44             get { return _Id; }
 45             set { _Id = value; }
 46         }
 47         private string _Name;
 48         public string Name
 49         {
 50             get { return _Name; }
 51             set { _Name = value; }
 52         }
 53         private string _Addr;
 54         public string Addr
 55         {
 56             get { return _Addr; }
 57             set { _Addr = value; }
 58         }
 59         public Driver(int id, string name, string addr)
 60         {
 61             Id = id;
 62             Name = name;
 63             Addr = addr;
 64         }
 65         
 66     }
 67     //Detail类
 68     public class Car
 69     {
 70         private int _Id;
 71         public int Id
 72         {
 73             get { return _Id; }
 74             set { _Id = value; }
 75         }
 76         private string _CarName;
 77         public string CarName
 78         {
 79             get { return _CarName; }
 80             set { _CarName = value; }
 81         }
 82         public Car(int id, string carname)
 83         {
 84             Id = id;
 85             CarName = carname;
 86         }
 87         //静态查询函数,对应ObjectDataSource中的SelectMethod,参数对应从主表中传入的Key
 88         //在ObjectDataSource根据这个参数自动产生,然后只要指定参数来源于Session中的ID即可
 89         public static List<Car> GetMyCar(int id)
 90         {
 91             //随机产生一个子表的返回数据,此处可以替换成调用其他BLL接口
 92             List<Car> cars = new List<Car>();
 93 
 94             cars.Add(new Car(id, "Car" + (id * 10 + 1).ToString()));
 95             cars.Add(new Car(id, "Car" + (id * 10 + 2).ToString()));
 96             cars.Add(new Car(id, "Car" + (id * 10 + 3).ToString()));
 97             cars.Add(new Car(id, "Car" + (id * 10 + 4).ToString()));
 98             return cars;
 99         }
100         
101     }
102 }
103 
复制代码

 

群212099235
原创粉丝点击