AspxGridView使用手记

一、  基本使用方法  4

1.导入Dll文件   4
2.Asp.Net页面控件注册 4
3. Asp.Net页面控件声明    5
4.删除licenses.licx协议文件(盗版)   5
5.功能概述  5
二、  绑定数据(单层)    5
1.使用DataSource属性绑定DataTable 5
2.使用DataSourceID属性绑定SqlDataSource   6
3.使用DataSourceID属性绑定ObjectDataSource    6
4.使用DataSourceID属性绑定LinqDataSource  9
5.使用DataSourceID属性绑定XmlDataSource   10
三、  绑定数据(嵌套树)   10
1.主从数据绑定    10
四、  客户端行维护(新增、修改、删除等)   12
1.编辑状态  12
2.新增    13
3.修改    13
4.删除    13
五、  服务器端行维护(新增、修改、删除等)  13
1.编辑状态  13
2.新增    13
3.修改    15
4.删除    16
六、  数据保存    17
七、  客户端行选择  17
1.选择页面上所有行  17
2.选中指定行或所有行 18
3.获取选中行 18
4.取消页面上所有行的选择   19
5.取消指定行或所有行的选择  19
八、  服务器端行选择 19
1.可选择性设置    19
2.Selection属性   19
九、  客户端行定位  20
1.将焦点转移到编辑行的指定列 20
2.获取焦点行号    20
3.将某行置为可见(未验证)  20
4.跳转到指定页    20
十、  服务器端行定位 21
1.焦点行   21
2.将某行置为可见   21
3.跳转到指定页    21
十一、 客户端数据搜索 21
1.数据过滤  21
十二、 服务端数据搜索 22
1.数据过滤  22
2.数据搜索  22
十三、 分页  23
1.分页条相关属性   23
2.更改分页条按钮属性 26
3.与分页相关操作   26
十四、 客户端排序   26
1.使用SortBy方法排序  26
十五、 服务器端排序  27
1.排序设置  27
2.使用SortBy方法排序  27
3.直接操作GridViewDataColumn排序  28
4.使用GetSortedColumns方法取排序栏位 28
十六、 服务器端数据分组    28
1.数据分组的前提条件 28
2.使用GroupBy方法实现数据分组 28
3.分组的展开与折叠  29
4.判断分组行是否展开 29
5.数据分组的相关设置 29
6.按分组值排序    30
十七、 客户端数据分组 30
1.使用GroupBy方法实现数据分组 30
2.分组的展开与折叠  30
3.判断分组行是否展开 31
4.判断是分组行还是数据行   31
5.用户拖动栏位到分组带实现分组    31
十八、 数据导出    31
1.内置数据导出的前提条件   31
2.支持的数据导出类型 32
3. ASPxGridViewExporter重要属性 32
4.主从ASPxGridView数据导出    32
5.导出到Pdf时中文乱码问题的解决  33
十九、 报表打印    33
二十、 懒加载 33
二十一、    客户端栏位取值与赋值  33
1.使用GetPageRowValues取当前页指定栏位值   33
2.使用GetRowValues取指定行指定栏位值   34
3.使用GetSelectedFieldValues取选中行指定栏位值 34
4.取栏位实例 34
5.使用GetColumnsCount取栏位总数    34
6.使用MoveColumn隐藏和移动栏位   34
7. 使用GetRowKey取行主键值 35
二十二、    服务器端栏位取值与赋值 35
1.取行值   35
2.取列值   36
二十三、    栏位编辑风格  38
1.AspxGridView栏位类型  38
2.GridViewColumn服务器端重要属性    38
3.GridViewColumn服务器端方法  40
4.GridViewCommandColumn:命令按钮列   41
5. GridViewDataColumn:基本数据列 42
6.GridViewDataButtonEditColumn:编辑按钮列    45
7.GridViewDataCheckColumn: 复选框列 45
8.GridViewDataTextColumn:文本列    45
二十四、    栏位格式化   45
二十五、    固定列 45
二十六、    栏位拖动    45
二十七、    栏位合计    46
二十八、    栏位初始值   46
二十九、    栏位可编辑性  46
三十、 栏位数据校验  46
1.行数据校验(编辑状态)   46
三十一、    客户端事件   49
三十二、    服务器端事件  49
1.服务器事件索引   49
2.AutoFilterCellEditorCreate    49
3.AutoFilterCellEditorInitialize    50
4.BeforeGetCallbackResult   50
5.BeforePerformDataSelect   51
6.CancelRowEditing  51
7. CellEditorInitialize 51
7. ClientLayout 52
8. CustomButtonCallback 52
9. CustomCallback   53
10. CustomColumnDisplayText 54
11. CustomColumnGroup   54
12. CustomColumnSort    55
13. CustomDataCallback  56
14. CustomErrorText 57
15. CustomGroupDisplayText  57
16. CustomJSProperties  58
17. CustomSummaryCalculate  58
三十三、    快捷键 59
三十四、    样式  59
1.GridViewStyles重要属性    59
2. GridViewAlternatingRowStyle重要属性  59
三十五、    AspxGridView服务器端重要属性    60
三十六、    AspxGridView服务器端重要方法    60
三十七、    GridViewColumnCollection服务器端重要属性    61
三十八、    AspxGridView客户端重要属性 61
三十九、    AspxGridView客户端常用方法 64
1.PerformCallback   77
四十、 AspxGridView客户端非常用方法    78
四十一、    ASPxClientGridViewColumn(客户端栏位)常用属性 79
四十二、    嵌套AspxGridView的特殊控制 80
1.控制在同一时间只允许一行展开    80
2.SettingsDetail属性设置    80
3.嵌套AspxGridView树展开与折叠(客户端) 80
四十三、    AspxGridView客户端源代码可借鉴点  81
四十四、    AspxGridView服务器端源代码可借鉴点 81
四十五、    BUG 81
四十六、    附录  81
1.格式化标识符    81
2.字符串转为枚举型  83
 
一、  基本使用方法
1.导入Dll文件
DevExpress.Web.ASPxGridView.v9.1.dll
DevExpress.Web.ASPxEditors.v9.1.dll
DevExpress.Web.v9.1.dll
DevExpress.Data.v9.1.dll文件
2.Asp.Net页面控件注册
<%@ Register Assembly= "DevExpress.Web.v9.1, Version=9.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
     Namespace= "DevExpress.Web"  TagPrefix= "dxwgv"  %>
<%@ Register Assembly= "DevExpress.Web.ASPxEditors.v9.1, Version=9.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
     Namespace= "DevExpress.Web.ASPxEditors"  TagPrefix= "dxe"  %>
<%@ Register Assembly= "DevExpress.Web.ASPxGridView.v9.1, Version=9.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
     Namespace= "DevExpress.Web.ASPxGridView"  TagPrefix= "dxwgv"  %>
<%@ Register Assembly= "DevExpress.Data.v9.1, Version=9.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
     Namespace= "DevExpress.Data"  TagPrefix= "dxwgv"  %>
3. Asp.Net页面控件声明
"ASPxGridView1"  runat= "server" >
        
             "LogID"  FieldName= "LogID"  />
             "发生时间"  FieldName= "OCCDatetime"  />
             "事件"  FieldName= "Event"  />
             "类型"  FieldName= "Type"  />
             "创建人"  FieldName= "Creator"  />
             "创建日期"  FieldName= "CreateDate"  />
             "备注"  FieldName= "Remark"  />           
        
        
4.删除licenses.licx协议文件(盗版)
5.功能概述
(1)丰富的内置样式
(2)内建的 Ajax 操作
(3)提供客户端 API
(4)内置的排序,分页,分组,过滤功能,无需另外编码
(5)支持多种现场编辑模式: inline, EditForm, EditFormAndDisplayRow, PopupEditForm
(6)可定制模板,支持卡片视图、主从表视图
 
二、  绑定数据(单层)
可以通过给AspxGridView的DataSource属性或DataSourceID赋值来实现数据绑定。
所支持的数据源类型包括:SqlDataSource、ObjectDataSource、XmlDataSource、AccessDataSource、SiteMapDatasource、LinqDataSource
1.使用DataSource属性绑定DataTable
static  string  _connectionstring = "Data Source=192.168.1.1 nitial Catalog=SDERP;UID=sa;Password=xxxx”
DataSet currentDs = new  DataSet();
using  (SqlConnection currentConn = new  SqlConnection(_connectionstring))
{
     //获取数据
     currentConn.Open();
     SqlDataAdapter currentSda = new  SqlDataAdapter( "select row_number() over(order by LogID) as RowNumber,* from Sys_Log" , currentConn);
     currentSda.Fill(currentDs, "Sys_Log" );
 
     this .ASPxGridView1.DataSource = currentDs.Tables[ "Sys_Log" ];
     this .ASPxGridView1.DataBind();
 
     currentConn.Close();
}
2.使用DataSourceID属性绑定SqlDataSource
"ASPxGridView1"  runat= "server"  DataSourceID= "SqlDataSource1" >
     "LogID"  FieldName= "LogID"  />
     "发生时间"  FieldName= "OCCDatetime"  />
     "事件"  FieldName= "Event"  />
     "类型"  FieldName= "Type"  />
     "创建人"  FieldName= "Creator"  />
     "创建日期"  FieldName= "CreateDate"  />
     "备注"  FieldName= "Remark"  />           
   id= "SqlDataSource1"
   runat= "server"
   DataSourceMode= "DataReader"
   ConnectionString= "Data Source=192.168.1.252;Initial Catalog=SDERP;UID=sa;Password=XXXXXXXXX"
   SelectCommand= "select row_number() over(order by LogID) as RowNumber,* from Sys_Log" >
3.使用DataSourceID属性绑定ObjectDataSource
"ASPxGridView1"  runat= "server"  DataSourceID= "ObjectDataSource1" >
     "LogID"  FieldName= "LogID"  />
     "发生时间"  FieldName= "OCCDatetime"  />
     "事件"  FieldName= "Event"  />
     "类型"  FieldName= "Type"  />
     "创建人"  FieldName= "Creator"  />
     "创建日期"  FieldName= "CreateDate"  />
     "备注"  FieldName= "Remark"  />           
   id= "ObjectDataSource1"
   runat= "server"
   selectmethod= "GetAllLog"
   typename= "AspxGridView.SysLogDAL"  />
其中SysLogDAL.cs代码如下:
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Data;
using  System.Data.SqlClient;
using  System.Collections;
 
namespace  AspxGridView
{
     public  class  SysLogDAL
     {
         static  string  _connectionstring = "Data Source=192.168.1.252;Initial Catalog=SDERP;UID=sa;Password=XXXXXXXXX" ;
         public  static  ICollection GetAllLog()
         {
             ArrayList al = new  ArrayList();
             DataSet currentDs = new  DataSet();
             using  (SqlConnection currentConn = new  SqlConnection(_connectionstring))
             {
                 //获取数据
                 currentConn.Open();
                 SqlDataAdapter currentSda = new  SqlDataAdapter( "select * from Sys_Log" , currentConn);
                 currentSda.Fill(currentDs, "Sys_Log" );
 
                 DataTable dt = currentDs.Tables[ "Sys_Log" ];
                 foreach  (DataRow dr in  dt.Rows)
                 {
                     SysLogEntry e = new  SysLogEntry();
                     e.LogID = Int32.Parse(dr[ "LogID" ].ToString());
                     e.OCCDatetime = DateTime.Parse(dr[ "OCCDatetime" ].ToString());
                     e.Event = dr[ "Event" ].ToString();
                     e.Type = dr[ "Type" ].ToString();
                     e.Creator = dr[ "Creator" ].ToString();
                     e.CreateDate = DateTime.Parse(dr[ "CreateDate" ].ToString());
                     e.Remark = dr[ "Remark" ].ToString();
                     al.Add(e);
                 }
 
                 currentConn.Close();
             }
             return  al;
         }
     }
}
其中SysLogEntry.cs代码如下:
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
 
namespace  AspxGridView
{
     public  class  SysLogEntry
     {
         public  int  LogID
         {
             get ;
             set ;
         }
         public  DateTime OCCDatetime
         {
             get ;
             set ;
         }
         public  string  Event
         {
             get ;
             set ;
         }
         public  string  Type
         {
             get ;
             set ;
         }
         public  string  Creator
         {
             get ;
             set ;
         }
         public  DateTime CreateDate
         {
             get ;
             set ;
         }
         public  string  Remark
         {
             get ;
             set ;
         }
     }
}
4.使用DataSourceID属性绑定LinqDataSource
"ASPxGridView1"  runat= "server"  DataSourceID= "LinqDataSource1" >
     "LogID"  FieldName= "LogID"  />
     "发生时间"  FieldName= "OCCDatetime"  />
     "事件"  FieldName= "Event"  />
     "类型"  FieldName= "Type"  />
     "创建人"  FieldName= "Creator"  />
     "创建日期"  FieldName= "CreateDate"  />
     "备注"  FieldName= "Remark"  />           
"LinqDataSource1"  runat= "server"
     ContextTypeName= "AspxGridView.SysLogDAL"  TableName= "SysLogEntrys" >
其中AspxGridView.SysLogDAL有一个SysLogEntrys的属性,代码如下(其它代码同例3)
public  ICollection SysLogEntrys
{
     get
     {
         return  this .GetAllLog(); ;
     }
}
5.使用DataSourceID属性绑定XmlDataSource
"ASPxGridView1"  runat= "server"  DataSourceID= "XmlDataSource1" >
     "LogID"  FieldName= "LogID"  />
     "发生时间"  FieldName= "OCCDatetime"  />
     "事件"  FieldName= "Event"  />
     "类型"  FieldName= "Type"  />
     "创建人"  FieldName= "Creator"  />
     "创建日期"  FieldName= "CreateDate"  />
     "备注"  FieldName= "Remark"  />           
"XmlDataSource1"  runat= "server"  DataFile= "~/Sys_Log.xml" >
其中Sys_Log.xml文件内容如下
'1.0'  encoding= 'gb2312' ?>
     "1"  OCCDatetime= "2010-06-09 10:10:11.083"  Event= "用户【杨东】登陆系统"  Type= "登陆信息"  Creator= "sa"  CreateDate= "2010-10-21 11:23:08.090"  Remark= ""  />
 
三、  绑定数据(嵌套树)
1.主从数据绑定
AspxGridView允许嵌套。
可以通过设置主AspxGridView的ShowDetailRow= true 来开启嵌套。 "true"  />。
子AspxGridView定义在父AspxGridView的标签中。
 
例:Asp.Net代码
"MasterGrid"  runat= "server"  KeyFieldName= "TaskCode"  ClientInstanceName= "mastergrid"  DataSourceID= "SqlDataSource1"
  >       
"true"  />
     "任务编号"  FieldName= "TaskCode"  />
     "任务名称"  FieldName= "TaskName"  />
     "任务类型"  FieldName= "TaskType"  />
     "计划工时"  FieldName= "PlanHours"  />
     "计划开始时间"  FieldName= "PlanBeginDate"  />
     "计划结束时间"  FieldName= "PlanEndDate"  />
     "备注"  FieldName= "Remark"  />    
     "操作"  Visible= "true" >
         "保存"  Visible= "true"  />
         "新增"  Visible= "true"  />
         "取消"  Visible= "true"  />
         "清除"  Visible= "true"  />
         "选择"  Visible= "true"  />
          
"true"  />
    
         "DetailGrid"  runat= "server"  KeyFieldName= "ID"  ClientInstanceName= "detailgrid"  DataSourceID= "SqlDataSource2"
          OnBeforePerformDataSelect= "DetailGrid_BeforePerformDataSelect" >
            
                 "ID"  FieldName= "ID"  />
                 "任务编号"  FieldName= "TaskCode"  Visible= "false"  />
                 "子任务名称"  FieldName= "ChildTaskName"  />
                 "执行人"  FieldName= "ExecuteUser"  />
                 "计划工时"  FieldName= "PlanHours"  />
                 "计划开始时间"  FieldName= "PlanBeginDate"  />
                 "计划结束时间"  FieldName= "PlanEndDate"  />
            
             "true"  />
        
    
"ObjectDataSource_Type"  runat= "server"  SelectMethod= "GetUsers"
TypeName= "AspxGridView.SysUser" >       
 
   id= "SqlDataSource1"
   runat= "server"          
   DataSourceMode= "DataSet"
   ConnectionString= "Data Source=192.168.1.252;Initial Catalog=SDERP;UID=sa;Password=shangdaosoft"
   SelectCommand= "select * from TM_Task_Master"
   >         
   id= "SqlDataSource2"
   runat= "server"          
   DataSourceMode= "DataSet"
   ConnectionString= "Data Source=192.168.1.252;Initial Catalog=SDERP;UID=sa;Password=shangdaosoft"
   SelectCommand= "select * from TM_Task_Detail where TaskCode = @TaskCode"
   >
  
     "TaskCode"  SessionField= "TaskCode"  />
            
 
C#代码:
//子AspxGridView数据绑定
protected  void  DetailGrid_BeforePerformDataSelect( object  sender, EventArgs e)
{
     Session[ "TaskCode" ] = (sender as  ASPxGridView).GetMasterRowKeyValue();
}
四、  客户端行维护(新增、修改、删除等)
1.编辑状态
(1)进入编辑状态
在调用AddNewRow()时或点击【新增】按钮自动进入编辑状态
调用StartEditRow()或点击【编辑】按钮进入编辑状态
(2)取消编辑状态
点击【取消】按钮或【保存按钮】自动取消编辑状态
调用CancelEdit()或UpdateEdit()取消编辑状态
2.新增
新增行方法:AddNewRow()
function AddNewRow();
3.修改
调用StartEditRow()使行进入编辑状态
function StartEditRow(visibleIndex : int );
4.删除
调用DeleteRow方法实现数据删除。
语法:function DeleteRow(visibleIndex : int );
 
五、  服务器端行维护(新增、修改、删除等)
1.编辑状态
(1)进入编辑状态
在调用AddNewRow()时或点击【新增】按钮自动进入编辑状态
调用StartEditRow()或点击【编辑】按钮进入编辑状态
(2)取消编辑状态
点击【取消】按钮或【保存按钮】自动取消编辑状态
调用CancelEdit()或UpdateEdit()取消编辑状态
2.新增
(1)在新增、修改、删除行前应设置KeyFieldName属性,否则无法执行行维护。
(2)编辑模式的设置(SettingsEditing.Mode属性,GridViewEditingMode类型)
Inline:在当前行上直接编辑(类似grid)
EditForm:当前行转化为表单,嵌入在行中
EditFormAndDisplayRow:同EditForm,但保留当前行
PopupEditForm: 弹出窗口编辑
(3)新增行的位置
SettingsEditing.NewItemRowPosition属性用来指定新增行的位置。GridViewNewItemRowPosition枚举型,可取值:Top、Bottom。默认为Top。
当取值为Top时,在当前页第一行新增;当取值为Bottom时,在当前页最后一行新增。
(4)如果使用SqlDataSource作为数据源,DataSourceMode=”DataSet”才可更新数据(插入、修改、删除),DataSourceMode=”datareader”时不可更新数据。同时必须配置InsertCommand属性。
(5)新增行方法:AddNewRow()
//新增数据行
protected  void  btnServerAddRow_Click( object  sender, EventArgs e)
{
     string  editMode = this .ddlEditMode.SelectedValue;
     GridViewEditingMode gridViewEditingMode;
     switch  (editMode)
     {
         case  "Inline" :
             gridViewEditingMode = GridViewEditingMode.Inline;
             break ;
         case  "EditForm" :
             gridViewEditingMode = GridViewEditingMode.EditForm;
             break ;
         case  "EditFormAndDisplayRow" :
             gridViewEditingMode = GridViewEditingMode.EditFormAndDisplayRow;
             break ;
         case  "PopupEditForm" :
             gridViewEditingMode = GridViewEditingMode.PopupEditForm;
             break ;
         default :
             gridViewEditingMode = GridViewEditingMode.Inline;
             break ;
     }
     this .ASPxGridView1.SettingsEditing.Mode = gridViewEditingMode;
     this .ASPxGridView1.AddNewRow();
}
新增行后保存数据方法示例
可以直接点内置的【保存】按钮保存数据。
"ASPxGridView1"  runat= "server"  KeyFieldName= "LogID"  DataSourceID= "SqlDataSource1"
>       
     "LogID"  FieldName= "LogID"  ReadOnly= "false"  />
     "发生时间"  FieldName= "OCCDatetime"  ReadOnly= "false"  />
     "事件"  FieldName= "Event"  />
     "类型"  FieldName= "Type"  />
     "创建人"  FieldName= "Creator"  />
     "创建日期"  FieldName= "CreateDate"  />
     "备注"  FieldName= "Remark"  />     
     "操作"  Visible= "true" >
         "保存"  Visible= "true"  />
         "新增"  Visible= "true"  />
          
 
   id= "SqlDataSource1"
   runat= "server"          
   DataSourceMode= "DataSet"
   ConnectionString= "Data Source=192.168.1.252;Initial Catalog=SDERP;UID=sa;Password=XXXXXXXXX"
   SelectCommand= "select * from Sys_Log"
   InsertCommand= "Insert into Sys_Log(OCCDatetime,Event,Type,Creator,CreateDate,Remark) values(@OCCDatetime,@Event,@Type,@Creator,@CreateDate,@Remark)" >
  
     "OCCDatetime"  Type= "DateTime"  />
     "Event"  Type= "String"  />
     "Type"  Type= "String"  />
     "Creator"  Type= "String"  />
     "CreateDate"  Type= "DateTime"  />
     "Remark"  Type= "String"  />          
  
也可以调用AspxGridView的UpdateEdit方法实现保存。
例:
protected  void  btnServerSave_Click( object  sender, EventArgs e)
{
     this .ASPxGridView1.UpdateEdit(); //保存数据
     this .ASPxGridView1.CancelEdit(); //取消编辑状态
}
3.修改
(1)必要条件:数据源必须支持更新(如SqlDataSource配置了UpdateCommand), 必须有主键。
(2)调用StartEdit方法使行进入编辑状态
可以调用UpdateEdit方法保存数据,或调用CancelEdit方法取消编辑状态。
也可以显示出内置的【编辑】按钮让用户点击进入编辑状态。
例:
int  firstSelectedRowIndex =-1;
 
if  ( this .ASPxGridView1.VisibleRowCount <= 0) return ;
//取选中的第一行
do
{
     firstSelectedRowIndex++;
     if  ( this .ASPxGridView1.Selection.IsRowSelected(firstSelectedRowIndex))
     {
         break ;
     }
} while  (firstSelectedRowIndex >= 0 || firstSelectedRowIndex >= this .ASPxGridView1.VisibleRowCount);
 
if  (firstSelectedRowIndex == -1)
{
     firstSelectedRowIndex = 0;
}
int  logID = ( int )( this .ASPxGridView1.GetRowValues(firstSelectedRowIndex, "LogID" ));
 
this .ASPxGridView1.MakeRowVisible(logID); //使指定行可见
this .ASPxGridView1.FocusedRowIndex = 0; //使指定行成为当前行
this .ASPxGridView1.Selection.UnselectAll(); //取消所有行的选择
this .ASPxGridView1.Selection.SelectRow(0); //选中第一行
this .ASPxGridView1.StartEdit(firstSelectedRowIndex); //使指定行进入编辑状态
 
4.删除
(1)如果数据源不支持删除则无法执行。必须有主键才能删除(KeyFieldName)。
(2)可调用DeleteRow方法实现数据删除。DeleteRow成功执行后会将数据从数据库中删除。调用DeleteRow方法会首先触发RowDeleting事件(可以在此事件中阻止删除),执行后会触发RowDeleted事件。终端用户还可以通过点击内置的【删除】按钮实现删除。
DeleteRow语法:
Void DeleteRow( int  visibleIndex)
参数visibleIndex表示行号。
RowDeleting事件的声明原型:
void  ASPxGridView1_RowDeleting( object  sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
可以通过修改ASPxDataDeletingEventArgs.Cancel= true 来阻止删除。
DevExpress.Web.Data.ASPxDataDeletingEventArgs属性:
Cancel: bool ,是否取消删除。可读写。
Keys:OrderedDictionary,要删除行的主键栏位值。只读。
Values: OrderedDictionary,要删除行的非主键(实际上是所有栏位)栏位值。只读。
例:
//删除行前事件
protected  void  ASPxGridView1_RowDeleting( object  sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
     for  ( int  i = 0; i < e.Keys.Count; i++)
     {
         if  (Int32.Parse(e.Keys[i].ToString()) > 20000)
         {
             e.Cancel = true ;
             break ;
         }
     }
}
RowDeleted事件的声明原型:
void  ASPxGridView1_RowDeleted( object  sender, DevExpress.Web.Data.ASPxDataDeletedEventArgs e)
可以在此事件中获取删除时出现的异常并按自己的方法处理异常,或记录成功删除的行数。
DevExpress.Web.Data.ASPxDataDeletedEventArgs属性包括:
AffectedRecords: int ,删除影响到的行数。只读。
Exception:Exception,删除数据期间发生的异常。只读。
ExceptionHandled: bool ,是否已处理异常。可读写。
Keys:OrderedDictionary,要删除行的主键栏位值。只读。
Values: OrderedDictionary,要删除行的非主键(实际上是所有栏位)栏位值。只读。
 
六、  数据保存
调用UpdateEdit方法保存数据。或调用BeginUpdate()和EndUpdate()保存数据。
七、  客户端行选择
1.选择页面上所有行
(1)SelectAllRowsOnPage方法
语法1: void  SelectAllRowsOnPage()
语法2: void  SelectAllRowsOnPage( bool  selected)
参数:selected:选择或取消选择
2.选中指定行或所有行
(1)SelectRows方法
语法1: void  SelectRows() //选择所有记录(包括不是当前页的记录)
语法2: void  SelectRows( int  visibleIndex) //选择指定行(必须设置KeyFieldName)
语法3: void  SelectRows(int32[] visibleIndces)
语法4: void  SelectRows( int  visibleIndex, bool  selected)
语法5: void  SelectRows(int32[] visibleIndces, bool  selected)
例:选中第1-10行
var  rows = new  Array();
for  ( var  i = 0; i < 10; i++) {
     rows[i] = i;
}
grid.SelectRows(rows);
(2)SelectRowsByKey方法
语法1: void  SelectRowsByKey( object  key)
语法2: void  SelectRowsByKey(Object[] keys)
语法3: void  SelectRowsByKey( object  key, bool  selected);
语法4: void  SelectRowsByKey(Object[] keys, bool  selected);
3.获取选中行
(1)取选中行数
语法:Int GetSelectedRowCount()
(2)取选中行栏位值
function GetSelectedFieldValues(fieldNames : String,onCallback : ASPxClientGridViewValuesCallback);
例:
function GetSelectedFieldValues(){
     var  fieldNames = "LogID" ;
     grid.GetSelectedFieldValues(fieldNames, GetSelectedFieldValues_Callback);
}
function GetSelectedFieldValues_Callback(result) {
     var  msg= "" ;
     if  (result.length > 0) {
         for  ( var  i = 0; i < result.length; i++) {
             msg = msg + result[i].toString();
         }
     }
     alert(msg);
}
4.取消页面上所有行的选择
(1)UnselectAllRowsOnPage方法
语法: void  UnselectAllRowsOnPage()
5.取消指定行或所有行的选择
(1)UnselectRowOnPage方法
语法:function UnselectRowOnPage(visibleIndex : int );
(2)UnselectRows方法
语法1: void  UnselectRows(); //取消所有行的选择
语法2: void  UnselectRows( int  visibleIndex); //取消指定行的选择
语法3: void  UnselectRows(Int32[] visibleIndices); //取消指定范围内行的选择
(3) UnselectRowsByKey方法
语法1: void  UnselectRowsByKey(Object[] keys);
语法2: void  UnselectRowsByKey( object  key);
八、  服务器端行选择
1.可选择性设置
AspxGridView的SettingsBehavior属性中可以设置是否允许多行选。
This.AspxGridView.SettingsBehavior.AllowSelectByRowClick= true //是否支持单击行选择(V10.0以上)
This.AspxGridView.SettingsBehavior.AllowMultiSelection= true //是否支持多选
2.Selection属性
AspxGridView的Selection属性封装了与行选择有关的属性和方法。它是DevExpress.Web.Data.WebDataSelection类型。
(1) void  Selection.SelectAll():选中所有行。不仅仅包括当前页可见的行,还包括非当前页的行。
(2) void  Selection.SelectRow( int  visibleIndex):选中指定行。该行必须在当前页可见才能被选中。
(3) void  Selection.SelectRowByKey( object  keyValue):按主键值选中指定行。该行可以不必在当前页。要注意主键值的数据类型应与主键列所定义的数据类型一致。
(4) void  Selection.UnselectAll():取消所有行的选择。不仅仅包括当前页可见的行,还包括非当前页的行。
(5) void  Selection.UnselectRow( int  visibleIndex):取消指定行的选择。该行必须在当前页可见才能被取消选中。
(6) void  Selection.UnselectRowByKey( object  keyValue):按主键值取消指定行的选择。该行可以不必在当前页。要注意主键值的数据类型应与主键列所定义的数据类型一致。
(7) void  Selection.SetSelection( int  visibleIndex, bool  selected):选中或取消选中指定行。该行必须在当前页可见才能被选择或取消选中。
(8) void  Selection.SetSelectionByKey( object  keyValue, bool  selected):根据主键值选中或取消选中指定行。该行可以不必在当前页。
(9) bool  Selection.IsRowSelected( int  visibleIndex):判断指定行是否被选中。该行必须在当前页可见。
(10)    bool  Selection.IsRowSelectedByKey( object  keyValue):判断指定主键值对应行是否被选中。该行可以不在当前页。
(11)    count属性( int )返回选中行的行数。
九、  客户端行定位
1.将焦点转移到编辑行的指定列
(1)调用SetFocusedRowIndex设置焦点行
function SetFocusedRowIndex(visibleIndex : int );
调用SetFocusedRowIndex方法后将触发FocusedRowChanged事件
(2)调用FocusEditor方法将焦点转移到编辑行的指定列
语法1:FocusEditor(ASPxClientGridViewColumn column);
语法2:FocusEditor( int  columnIndex);
语法3:FocusEditor( string  columnFieldNameOrId);
2.获取焦点行号
调用GetFocusedRowIndex方法
语法:function GetFocusedRowIndex() : int ;
3.将某行置为可见(未验证)
调用SetClientVisible方法。
4.跳转到指定页
(1)调用GotoPage方法跳转到指定行。
function GotoPage(pageIndex : int );
(2)调用PrevPage方法跳转到前一页。
function PrevPage();
(3)调用NextPage方法跳转到下一页。
function NextPage();
 
十、  服务器端行定位
1.焦点行
AspxGridView的焦点行(当前行)与选择行是有区别的
(1) 获取或设置焦点行可以访问其FocusedRowIndex属性。
(2) 可以通过SettingsBehavior.AllowFocusedRow读取或设置是否允许定位焦点行。
(3) 可以调用AspxGridView的MakeRowVisible方法使指定主键值的行所在页可见,从而立即看到选中或跳转的效果。
例:
int  keyValue = ( int )( this .ASPxGridView1.GetRowValues(0, "LogID" ));
this .ASPxGridView1.MakeRowVisible(keyValue);
this .ASPxGridView1.FocusedRowIndex = 0;
this .ASPxGridView1.Selection.UnselectAll(); //取消所有行的选择
this .ASPxGridView1.Selection.SelectRow(0); //选中第一行
2.将某行置为可见
调用MakeRowVisible方法。
3.跳转到指定页
将PageIndex修改为指定页号则可跳转到指定页。
十一、 客户端数据搜索
1.数据过滤
(1)调用AutoFilterByColumn()方法实现过滤。
语法1: void  AutoFilterByColumn(ASPxClientGridViewColumn column, string  val);
语法2: void  AutoFilterByColumn( int  columnIndex, string  val);
语法3: void  AutoFilterByColumn( string  columnFieldNameOrId, string  val);
不会自动清除之前的过滤条件。
(2)调用ApplyFilter实现过滤。
语法:function ApplyFilter(filterExpression : String);
语法:
var  filterExpr = document.getElementById( "<%=txtFilterExpression.ClientID%>" ).value;
grid.ApplyFilter(filterExpr);
会自动清除之前的过滤条件。
(3)调用ClearFilter清除过滤条件
语法:function ClearFilter();
十二、 服务端数据搜索
1.数据过滤
(1)调用AutoFilterByColumn()方法可以实现服务端数据过滤。
AutoFilterByColumn语法: void  AutoFilterByColumn(GridViewColumn column, string  value)
参数说明:
column:要过滤的栏位
value:要过滤的栏位值。可以使用通配符。
例:数据过滤
protected  void  btnServerFilter_Click( object  sender, EventArgs e)
{
     string  filterColumnName = this .ddlFilterColumNames.SelectedValue;
     if  (filterColumnName != null )
     {
         GridViewColumn col = this .ASPxGridView1.Columns[filterColumnName] as  GridViewColumn;
         this .ASPxGridView1.AutoFilterByColumn(col, this .txtFilterColumnValue.Text);
     }   
}
(2)通过设置过滤工具条让用户自行输入条件过滤数据
this .ASPxGridView1.Settings.ShowFilterBar = GridViewStatusBarMode.Visible; //过滤状态条模式
this .ASPxGridView1.Settings.ShowFilterRow = true ; //是否过滤行
this .ASPxGridView1.Settings.ShowFilterRowMenu = true ; //是否显示过滤菜单
this .ASPxGridView1.SettingsBehavior.AutoFilterRowInputDelay = 1000; //自动过滤时间间隔(单位:毫秒,默认值:1200)
(3)设置FilterExpression过滤表达式
这是最灵活的一种的方法,可以使用任何有效过滤表达式(包括值比较操作符、逻辑运算符)
例:
LogID > 23955 and Event like '%审核%'
2.数据搜索
(1) FindVisibleIndexByKeyValue
语法: int  FindVisibleIndexByKeyValue( object  keyValue)
例:
//搜索
protected  void  btnFindKeyValue_Click( object  sender, EventArgs e)
{
     string  keyValue = this .txtFindKeyValue.Text;
     int  logID;
     
     if  (keyValue.Length > 0 && Int32.TryParse(keyValue, out  logID))
     {
         int  rowIndex = this .ASPxGridView1.FindVisibleIndexByKeyValue(logID);
         if  (rowIndex >= 0)
         {
             this .ASPxGridView1.Selection.UnselectAll(); //取消所有行的选择
             this .ASPxGridView1.Selection.SelectRow(rowIndex); //选中指定行
             this .ASPxGridView1.FocusedRowIndex = rowIndex;
             this .ASPxGridView1.MakeRowVisible(logID);
         }
     }
}
 
十三、 分页
AspxGridView默认支持分页,默认每页行数(PageSize)是10。如果不想分页,可以设置SettingsPager的Mode=” ShowAllRecords”。可以通过访问SettingsPager读取或更改相关分页属性。
1.分页条相关属性
属性名 数据类型    英文说明    中文说明
AlwaysShowPager bool     Gets or sets whether the Pager is  displayed within the ASPxGridView when there is  only on  page. 是否总是显示分页条(即在一页时是否也显示分页条)。可读写
CurrentPageNumberFormat string   Gets or sets the pattern used to format the text of the numeric button that corresponds to the selected page.   当前页次数字格式。可读写。类似如下格式:{0:G}
EllipsisMode    DevExpress.Web.ASPxPager.PagerEllipsisMode(枚举)  Gets or sets how an Ellipsis symbol(s) is  drawn to indicate page numbers that are omitted.  获取或设置页码省略模式。可读写。InsideNumeric:中间页码省略,None:不显示省略符,OutsideNumeric:两端页码省略
AllButton   DevExpress.Web.ASPxPager.AllButtonProperties    Gets the All button’s settings. 取所有分页条上按钮属性.只读
FirstPageButton DevExpress.Web.ASPxPager.FirstButtonProperties  Gets the First button's settings.   获取首页按钮属性设置。只读。通常更改其显示文本、可见性、图片。
LastPageButton  DevExpress.Web.ASPxPager.LastButtonProperties   Gets the Last button's settings.    获取末页按钮属性设置。只读。通常更改其显示文本、可见性、图片。
PrevPageButton  DevExpress.Web.ASPxPager.PrevButtonProperties   Gets the Previous button's settings.    获取上页按钮属性设置。只读。通常更改其显示文本、可见性、图片。
NextPageButton  DevExpress.Web.ASPxPager.NextButtonProperties   Gets the Next button's settings.    获取下页按钮属性设置。只读。通常更改其显示文本、可见性、图片。
Mode    GridViewPagerMode(枚举)   Gets or sets whether page-mode navigation is  enabled.   获取或设置是否分页。可读写。取值范围:ShowPager,表示要求分页;ShowAllRecords,显示所有记录,实际上是不分页。
NumericButtonCount  Int Gets or sets the maximum number of numeric buttons that can be
displayed within a paginated control.   获取或设置显示在分页条上的数字页码个数。可读写。
PageNumberFormat    String  Gets or sets the pattern used to format the text of numeric buttons.    数字页码格式。可读写。类似如下格式:{0:G}
PageSize    Int Gets or sets the maximum number of rows that can be displayed on  a
page.   每页行数。可读写。默认为10.
Position    PagerPosition(枚举)   Gets or sets the pager's position within an ASPxGridView control.   获取或设置分页条位置。可读写。取值范围:Top,Bottom, TopAndBottom.
SEOFriendly DevExpress.Web.ASPxPager.SEOFriendlyMode(枚举)    Gets or sets whether Search-Engine Optimization (SEO) mode is  enabled.  获取或设置搜索优化模式。可读写。取值范围:Enabled,启用;Disabled,不启用;CrawlerOnly,自动检测。
ShowDefaultImages   bool     Gets or sets whether default  button images are shown.   获取或设置是否显示缺省的分页图片。可读写。只有本属性设置为 true ,分页按钮(如首页)的图片才能更改生效。
ShowDisabledButtons Bool    Gets or sets whether navigation buttons that are temporarily disabled are shown.    获取或设置当分页按钮无效时是否隐藏。可读写。
ShowNumericButtons  Bool    Gets or sets whether numeric buttons are visible.   获取或设置数字页码是否可见。可读写。
ShowSeparators  Bool    Gets or sets whether separators that separate page numbers are shown.   获取或设置页码间是否放置分隔条(|)。可读写。
Summary DevExpress.Web.ASPxPager.SummaryProperties  Gets the control's Summary settings.    获取分页控件汇总属性。只读。
Visible Bool    Gets or sets whether the pager is  visible.  获取或设置分页条是否可见。可读写。
其中以下属性通常会被访问或重置。PageSize、各分页按钮文本。
2.更改分页条按钮属性
分页工具条上一般有首页(FirstPageButton)、上页(PrevPageButton)、下页(NextPageButton)、末页(LastPageButton)按钮。通常会对按钮的文本进行本地化。
例:
this .ASPxGridView1.SettingsPager.FirstPageButton.Text = "首页" ;
this .ASPxGridView1.SettingsPager.FirstPageButton.Visible = true ;
this .ASPxGridView1.SettingsPager.PrevPageButton.Text = "上一页" ;
this .ASPxGridView1.SettingsPager.NextPageButton.Text = "下一页" ;
this .ASPxGridView1.SettingsPager.LastPageButton.Text = "末页" ;
this .ASPxGridView1.SettingsPager.LastPageButton.Visible = true ;
3.与分页相关操作
(1)跳页: this .ASPxGridView1.PageIndex=<指定页号>
(2)取总页数: this .ASPxGridView1.PageCount
(3)页次改变事件PageIndexChanged
如果AspxGridView是动态绑定数据源,必须在翻页事件(PageIndexChanged)中重新绑定数据,否则翻页后无数据。
void  ASPxGridView1_PageIndexChanged( object  sender, EventArgs e)
十四、 客户端排序
1.使用SortBy方法排序
语法1: void  SortBy(ASPxClientGridViewColumn column);
语法2: void  SortBy( int  columnIndex);
语法3: void  SortBy( string  columnFieldNameOrId);
语法4: void  SortBy( string  columnFieldNameOrId, string  sortOrder);
语法5: void  SortBy(ASPxClientGridViewColumn column, string  sortOrder);
语法6: void  SortBy( int  columnIndex, string  sortOrder);
语法7: void  SortBy( int  columnIndex, string  sortOrder, bool  reset);
语法8: void  SortBy(ASPxClientGridViewColumn column, string  sortOrder, bool  reset);
语法9: void  SortBy( string  columnFieldNameOrId, string  sortOrder, bool  reset);
语法10: void  SortBy(ASPxClientGridViewColumn column, string  sortOrder, bool  reset, int  sortIndex);
语法11: void  SortBy( int  columnIndex, string  sortOrder, bool  reset, int  sortIndex);
语法12: void  SortBy( string  columnFieldNameOrId, string  sortOrder, bool  reset, int  sortIndex);
其中参数:
sortOrder:可取Ascending、Descending。
Reset:是否清除以前的排序规则。
(2)点击栏位题头排序。
按住Shift键可以指定多个栏位排序。
十五、 服务器端排序
1.排序设置
必须设置AspxGridView允许排序才可执行真正的排序(SettingsBehavior.AllowSort= true ),该选项默认为 true
2.使用SortBy方法排序
语法1. int  SortBy(GridViewColumn column, int  value)
语法2.ColumnSortOrder SortBy(GridViewColumn column,ColumnSortOrder value)
调用SortBy方法不会自动清除以前的排序栏位,如果不清除之前的排序栏位,则当前栏位会追加到排序栏位列表中。
可以通过以下方法清除以前的排序栏位。
(1) 调用ClearSort方法来清除以前的排序栏位
(2) 遍历栏位的SortIndex属性来确定是否参与过排序及排序的次序(SortIndex=-1表示不排序,另外栏位的SortOrder可获取或设置排序方式)。GridViewColumn. SortIndex=-1。
(3) 调用GridViewColumn.UnSort()方法
例:
protected  void  btnServerSort_Click( object  sender, EventArgs e)
{           
     string  sortColumn = this .ddlSortColumn.SelectedValue;
     string  sortType = this .ddlSortType.SelectedValue;
     GridViewDataColumn sortDataColumn;
     DevExpress.Data.ColumnSortOrder sortOrder;
 
     this .ASPxGridView1.SettingsBehavior.AllowSort = true ;
     if (sortType == "Desc" )
     {
         sortOrder = DevExpress.Data.ColumnSortOrder.Descending;
     }
     else
     {
         sortOrder = DevExpress.Data.ColumnSortOrder.Ascending;
     }
     if  (sortColumn != null )
     {
         this .ASPxGridView1.ClearSort(); //清除以前的排序栏位
         sortDataColumn = this .ASPxGridView1.Columns[sortColumn] as  GridViewDataColumn;
         this .ASPxGridView1.SortBy(sortDataColumn, sortOrder); //执行排序
     }
}
3.直接操作GridViewDataColumn排序
调用GridViewDataColumn.SortAscending()方法正向排序
调用GridViewDataColumn.SortDescending()方法逆向排序
4.使用GetSortedColumns方法取排序栏位
语法:System.Collections.ObjectModel.ReadOnlyCollection GetSortedColumns()
例:
System.Collections.ObjectModel.ReadOnlyCollection sortedColumnList = this .ASPxGridView1.GetSortedColumns();
StringBuilder msg = new  StringBuilder();
for  ( int  i = 0; i < sortedColumnList.Count; i++)
{
     msg.Append(sortedColumnList[i].FieldName);
}
string  js = "alert('"  + msg.ToString()+ "')" ;
ScriptManager.RegisterClientScriptBlock( this , this .GetType(), "GetSortedColumns" , js, true ); //在客户端执行脚本
 
十六、 服务器端数据分组
1.数据分组的前提条件
必须设置ASPxGridViewBehaviorSettings.AllowGroup= true 和ASPxGridViewBehaviorSettings.AllowSort= true
2.使用GroupBy方法实现数据分组
语法1: int  GroupBy(GridViewColumn column);
语法2: int  GroupBy(GridViewColumn column, int  value);
其中参数value表示分组的层次,-1表示取消该栏位的分组。
调用GroupBy方法不会自动清除以前的分组规则,可以调用ClearSort方法或UnGroup方法清除。
例:用一个栏位分组
this .ASPxGridView1.ClearSort(); //清空分组
string  columnName = this .ddlGroupColumns.SelectedValue;
GridViewColumn col = this .ASPxGridView1.Columns[columnName];
this .ASPxGridView1.GroupBy(col); //分组
例:用多个栏位分组
this .ASPxGridView1.ClearSort(); //清空分组
this .ASPxGridView1.GroupBy( this .ASPxGridView1.Columns[“Event”]); //分组
this .ASPxGridView1.GroupBy( this .ASPxGridView1.Columns[“Type”]); //分组
3.分组的展开与折叠
(1)使用ExpandAll展开所有分组。
语法: void  ExpandAll();
(2)使用ExpandRow展开指定分组行。
语法1: void  ExpandRow( int  visibleIndex);
语法2: void  ExpandRow( int  visibleIndex, bool  recursive);
参数recursive:是否递归。
(3)使用CollapseAll折叠所有分组。
语法: void  CollapseAll();
(4)使用CollapseRow折叠指定分组行。
语法1: void  CollapseRow( int  visibleIndex);
语法2: void  CollapseRow( int  visibleIndex, bool  recursive);
4.判断分组行是否展开
使用IsRowExpanded方法。
语法: bool  IsRowExpanded( int  visibleIndex);
5.数据分组的相关设置
(1)Setting.GroupFormat用来设置分组行的数据格式(可读写)。
默认是:{0}:{1}{2}。其中{0}表示分组栏位的标签(Caption属性),{1}表示分组栏位值,{2}表示汇总文本。{1}与{2}中间会自动显示括号。只有在标签中定义了汇总方式才会在显示其汇总文本。
例:
     "OCCDatetime"  SummaryType= "Count"  />           
(2) Setting. ShowGroupedColumns用来显示已分组的栏位。默认为 true
(3) Setting. ShowGroupedButtons用来显示分组展开按钮(+)。默认为 true
(4) Setting. ShowGroupFooter用来设置分组页脚显示模式(GridViewGroupFooterMode枚举型)。默认为Hidden。可取值:Hidden、VisibleAlways、VisibleIfExpanded。
(5)分组数据间隔。GroupInterval属性。
例: "DateYear"  />
GroupInterval可赋如下值:Alphabetical、Date、DateMonth、DateRange、DateYear、Default、DisplayText、Value。
6.按分组值排序
this .ASPxGridView1.GroupSummarySortInfo.Clear();
this .ASPxGridView1.GroupSummarySortInfo.AddRange( new  ASPxGroupSummarySortInfo( "OCCDatetime" , this .ASPxGridView1.GroupSummary[ "OCCDatetime" ], ColumnSortOrder.Ascending));
 
十七、 客户端数据分组
1.使用GroupBy方法实现数据分组
语法1: void  GroupBy( int  columnIndex);
语法2: void  GroupBy(ASPxClientGridViewColumn column);
语法3: void  GroupBy( string  columnFieldNameOrId);
语法4: void  GroupBy( string  columnFieldNameOrId, int  groupIndex);
语法5: void  GroupBy( int  columnIndex, int  groupIndex);
语法6: void  GroupBy(ASPxClientGridViewColumn column, int  groupIndex);
语法7: void  GroupBy( int  columnIndex, int  groupIndex, string  sortOrder);
语法8: void  GroupBy(ASPxClientGridViewColumn column, int  groupIndex, string  sortOrder);
语法9: void  GroupBy( string  columnFieldNameOrId, int  groupIndex, string  sortOrder);
2.分组的展开与折叠
(1)使用ExpandAll展开所有分组。
语法: void  ExpandAll();
(2)使用ExpandRow展开指定分组行。
语法1: void  ExpandRow( int  visibleIndex);
语法2: void  ExpandRow( int  visibleIndex, bool  recursive);
参数recursive:是否递归。
(3)使用CollapseAll折叠所有分组。
语法: void  CollapseAll();
(4)使用CollapseRow折叠指定分组行。
语法1: void  CollapseRow( int  visibleIndex);
语法2: void  CollapseRow( int  visibleIndex, bool  recursive);
3.判断分组行是否展开
使用IsGroupRowExpanded方法。
语法: bool  IsGroupRowExpanded( int  visibleIndex);
4.判断是分组行还是数据行
(1)判断是否分组行
function IsGroupRow(visibleIndex : int ) : bool ;
(2)判断是否数据行
function IsDataRow(visibleIndex : int ) : bool ;
5.用户拖动栏位到分组带实现分组
首先需要显示分组带: "True"  />
使用鼠标将栏位拖动到分组带即可实现即时分组。将分组栏位拖回题头则取消分组。
 
十八、 数据导出
1.内置数据导出的前提条件
使用DevExpress.Web.ASPxGridView.Export.ASPxGridViewExporter实现数据导出。注意一定要将该控件放在页面上才可。
应引入以下dll文件:
DevExpress.Utils.v9.1.dll
DevExpress.Web.ASPxGridView.v9.1.Export.dll
DevExpress.XtraPrinting.v9.1.dll
Asp.Net页面注册代码:
<%@ Register Assembly= "DevExpress.Web.ASPxGridView.v9.1.Export, Version=9.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
     Namespace= "DevExpress.Web.ASPxGridView.Export"  TagPrefix= "dxwgve"  %>
<%@ Register Assembly= "DevExpress.XtraPrinting.v9.1, Version=9.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
     Namespace= "DevExpress.XtraPrinting"  TagPrefix= "dxwgve"  %>
Asp.net页面控件声明:
"ASPxGridViewExporter1"  runat= "server" >
2.支持的数据导出类型
ASPxGridViewExporter支持导出到Csv、Pdf、Rtf、Excel文件,所对应的方法分别为:WriteCsv(WriteCsvResponse)、WritePdf(WritePdfResponse)、WriteRtf(WriteRtfResponse)、WriteXls(WriteXlsResponse)。
在数据导出时通过给ASPxGridViewExporter的GridViewID指定一个AspxGridView控件ID。
例:将所有记录导出到Excel文件
ASPxGridViewExporter1.GridViewID = "ASPxGridView1" ;
ASPxGridViewExporter1.WriteXlsToResponse( "Sys_Log.xls" ); //导出到Excel
例:将所选记录导出到Pdf文件
ASPxGridViewExporter1.GridViewID = "ASPxGridView1" ;
ASPxGridViewExporter1. ExportedRowType = GridViewExportedRowType.Selected;
ASPxGridViewExporter1.WritePdfToResponse( "Sys_Log.pdf" ); //导出到pdf
3. ASPxGridViewExporter重要属性
属性名 数据类型    英文说明    中文说明
FileName    String  Gets or sets the file name to which the grid's data is  exported.    导出文件名称。可读写。
GridView    AspxGridView    Gets the ASPxGridView control to which the ASPxGridViewExporter is
assigned.   AspxGridView控件实例。只读。
GridViewID  String  Gets or sets the programmatic identifier of the associated ASPxGridView control.    需要导出数据的AspxGridView控件ID。可读写。
ExportedRowType GridViewExportedRowType(枚举) Gets or sets which rows should be exported. 导出行范围。可读写。取值范围:All,所有行;Selected,选中行。
4.主从ASPxGridView数据导出
在导出有主从关系的AspxGridView时可设置导出模式(SettingsDetail.ExportMode),取值范围:None(不导出子AspxGridView数据)、Expanded(已展开的子AspxGridView数据)、All(所有子AspxGridView数据)。在导出的文件中主数据下包含了子数据。
例:
//子AspxGridView导出模式
this .MasterGrid.SettingsDetail.ExportMode = (GridViewDetailExportMode)Enum.Parse( typeof (GridViewDetailExportMode), this .ddlExportMode.Text);
ASPxGridViewExporter1.GridViewID = "MasterGrid" ;
ASPxGridViewExporter1.WriteXlsToResponse( "Task.xls" ); //导出到Excel
5.导出到Pdf时中文乱码问题的解决
可以通过更改ASPxGridViewExporter的Styles.Default.Font.Name来处理中文乱码问题。有中文符号的字体可以正确显示中文。
 
十九、 报表打印
二十、 懒加载
二十一、    客户端栏位取值与赋值
1.使用GetPageRowValues取当前页指定栏位值
语法;function GetPageRowValues(fieldNames : String,onCallback : ASPxClientGridViewValuesCallback);
例:
function GetPageRowValues() {
     var  fieldNames = document.getElementById( "txtFieldName_GetPageRowValues" ).value;
     grid.GetPageRowValues(fieldNames, GetPageRowValues_Callback);
}
function GetPageRowValues_Callback(result) {
     var  msg = "" ;
     if  (result.length > 0) {
         for  ( var  i = 0; i < result.length; i++) {
             msg = msg + result[i].toString() + "," ;
         }
         msg = msg.substring(0, msg.length - 1);
     }
     alert(msg);
}
2.使用GetRowValues取指定行指定栏位值
语法:function GetRowValues(visibleIndex : int ,fieldNames : String,
onCallback : ASPxClientGridViewValuesCallback);
3.使用GetSelectedFieldValues取选中行指定栏位值
语法:function GetSelectedFieldValues(fieldNames : String,onCallback : ASPxClientGridViewValuesCallback);
4.取栏位实例
(1)使用GetColumn方法
语法:function GetColumn(columnIndex : int ) : ASPxClientGridViewColumn;
(2)使用GetColumnByField方法
语法:function GetColumnByField(columnFieldName : String) : ASPxClientGridViewColumn;
(3)使用GetColumnById方法
语法:function GetColumnById(columnId : String) : ASPxClientGridViewColumn;
5.使用GetColumnsCount取栏位总数
语法:function GetColumnsCount() : int ;
6.使用MoveColumn隐藏和移动栏位
(1)隐藏列
语法1: void  MoveColumn(ASPxClientGridViewColumn column);
语法2: void  MoveColumn( int  columnIndex);
语法3: void  MoveColumn( string  columnFieldNameOrId);
(2)移动列
语法4: void  MoveColumn(ASPxClientGridViewColumn column, int  moveToColumnVisibleIndex);
语法5: void  MoveColumn( int  columnIndex, int  moveToColumnVisibleIndex);
语法6: void  MoveColumn( string  columnFieldNameOrId, int  moveToColumnVisibleIndex);
语法7: void  MoveColumn( string  columnFieldNameOrId, int  moveToColumnVisibleIndex, bool
moveBefore);
语法8: void  MoveColumn( int  columnIndex, int  moveToColumnVisibleIndex, bool  moveBefore);
语法9: void  MoveColumn(ASPxClientGridViewColumn column, int  moveToColumnVisibleIndex, bool
moveBefore);
语法10: void  MoveColumn( string  columnFieldNameOrId, int  moveToColumnVisibleIndex, bool
moveBefore, bool  moveToGroup);
语法11: void  MoveColumn( int  columnIndex, int  moveToColumnVisibleIndex, bool  moveBefore,
bool  moveToGroup);
语法12: void  MoveColumn(ASPxClientGridViewColumn column, int  moveToColumnVisibleIndex, bool
moveBefore, bool  moveToGroup);
语法13: void  MoveColumn(ASPxClientGridViewColumn column, int  moveToColumnVisibleIndex, bool
moveBefore, bool  moveToGroup, bool  moveFromGroup);
语法14: void  MoveColumn( string  columnFieldNameOrId, int  moveToColumnVisibleIndex, bool
moveBefore, bool  moveToGroup, bool  moveFromGroup);
语法15: void  MoveColumn( int  columnIndex, int  moveToColumnVisibleIndex, bool  moveBefore,
bool  moveToGroup, bool  moveFromGroup);
7. 使用GetRowKey取行主键值
语法: string  function GetRowKey(visibleIndex : int )
二十二、    服务器端栏位取值与赋值
1.取行值
(1) 使用GetDataRow方法取指定行数据
语法:DataRow GetDataRow( int  visibleIndex)
visibleIndex:行号。可以是不在当前页上的行。只有通过DataSourceID绑定数据才可获取到数据,如果通过DataSource绑定数据是获取不到值的。
例:
string  srowIndex = this .txtGetDataRowIndex.Text;
int  rowIndex;
if (Int32.TryParse(srowIndex, out  rowIndex))
{
     DataRow dr = this .ASPxGridView1.GetDataRow(rowIndex); //取指定行数据
     if  (dr != null )
     {
         string  msg = "LogID="  + dr[ "LogID" ].ToString() + ";Event="  + dr[ "Event" ].ToString();
         Response.Write(msg);       
     }
}
(2) 使用GetRow方法取指定行数据
语法: object  GetRow( int  visibleIndex)
visibleIndex:行号。可以是不在当前页上的行。
该函数返回的是 object 类型,实际类型通常是DataRowView。
2.取列值
(1) 使用GetRowValues方法获取指定栏位值
语法: object  GetRowValues( int  visibleIndex,parms string  fieldnames[])
如果fieldNames只指定一个栏位,GetRowValues将返回 object 类型,程序员应转换为正确的数据类型。如果fieldNames指定了多个栏位,GetRowValues将返回 object []类型,可以通过 is 判断返回值。
例:
string  srowIndex = this .txtGetDataRowIndex.Text;
int  rowIndex;
string [] fieldName;
string  tempFieldName;
object  tempColumnValues;
object [] columnValues;
StringBuilder msg = new  StringBuilder();
int  count=0;
 
tempFieldName = this .txtGetValueColumnNames.Text;
fieldName = tempFieldName.Split( ',' ); //分解字符串到数组
if  (Int32.TryParse(srowIndex, out  rowIndex))
{
     tempColumnValues = this .ASPxGridView1.GetRowValues(rowIndex, fieldName); //取值
     if  (tempColumnValues is  System.Object[]) //返回数组
     {
         columnValues = (System.Object[])tempColumnValues;
         count = Math.Min(fieldName.Length, columnValues.Length);
         for  ( int  i = 0; i < count; i++)
         {
             msg.Append(fieldName[i] + "="  + columnValues[i].ToString());
         }
     }
     else //返回单个值
     {
         msg.Append(tempFieldName);
         msg.Append( "=" );
         msg.Append(tempColumnValues.ToString());
     }
     Response.Write(msg.ToString());
}
(2) 使用GetRowValuesByKeyValue方法获取指定栏位值
语法: object  GetRowValuesByKeyValue( object  keyValue,parms string  fieldnames[])
GetRowValuesByKeyValue方法与GetRowValues方法类似,只是前者通常主键值找到对应行再获取栏位值而已。
(3) 使用GetSelectedFieldValues方法获取选中行指定栏位值
语法:List< object >GetSelectedFieldValues(parms string  fieldnames[])
如果fieldNames只指定一个栏位,GetSelectedFieldValues将返回 object 列表(各栏位值数组),程序员应转换为正确的数据类型。如果fieldNames指定了多个栏位,GetSelectedFieldValues将返回 object []列表(逐行指定栏位值数组),可以通过 is 判断返回值。
例:
string  tempFieldName = this .txtGetValueColumnNames.Text;
string [] fieldName = tempFieldName.Split( ',' ); //分解字符串到数组
StringBuilder msg = new  StringBuilder();
 
List< object > tempFieldValues = this .ASPxGridView1.GetSelectedFieldValues(fieldName); //取选中行栏位值
//GetSelectedFieldValues返回值先行后列(类似二维数组)
//行列值行列值行列M值
//行N列值行N列值行N列M值
for  ( int  i = 0; i < tempFieldValues.Count; i++)
{
     if  (tempFieldValues[i] is  System.Object[]) //返回数组
     {
         object [] fieldValues = ( object [])tempFieldValues[i];
         for  ( int  j = 0; j < fieldValues.Length; j++)
         {
             msg.Append(fieldValues[j].ToString());
         }
     }
     else
     {
         msg.Append(tempFieldValues[i].ToString());
     }
}
Response.Write(msg.ToString());
(4)使用GetCurrentPageRowValues方法获取当前页指定栏位值
语法:List< object >GetCurrentPageRowValues (parms string  fieldnames[])
用法类似GetSelectedFieldValues。
二十三、    栏位编辑风格
1.AspxGridView栏位类型
GridViewCommandColumn:命令按钮列
GridViewDataColumn:基本数据列
GridViewDataBinaryImageColumn:二进制图像列
GridViewDataButtonEditColumn:编辑按钮列
GridViewDataCheckColumn: 复选框列
GridViewDataComboBoxColumn:组合框列
GridViewDataDateColumn:日期列
GridViewDataHyperLinkColumn:超链接列
GridViewDataImageColumn:图像列
GridViewDataMemoColumn:大文本列
GridViewDataProgressBarColumn:进度条列
GridViewDataSpinEditColumn:微调掩码列
GridViewDataTextColumn:文本列
其中GridViewCommandColumn与GridViewDataColumn时同级的,都继承自GridViewColumn.
GridViewDataTextColumn类继承自GridViewEditDataColumn,GridViewEditDataColumn继承自GridViewDataColumn,其它数据列直接继承自GridViewDataColumn。
GridViewColumn是一个抽象类,不能将栏位直接声明为GridViewColumn类。
2.GridViewColumn服务器端重要属性
属性名 数据类型    英文说明    中文说明
Caption String  Gets or sets the text displayed within the column header.   栏位题头文本。可读写。
CellStyle   GridViewCellStyle   Gets the style settings used to paint column cells. 栏位样式。只读。
Collection  DevExpress.Web.ASPxClasses. Collection  Gets the collection to which an item belongs.   栏位所属集合。只读。
FixedStyle  GridViewColumnFixedStyle(枚举)        栏位冻结时的样式。可读写。取值范围:Left,固定;None:不固定。
FooterCellStyle GridViewFooterStyle Gets the style settings used to paint footer cells within a column. 页脚栏位样式。只读。
FooterTemplate  ITemplate   Gets or sets a template for  displaying the column's footer cell.    栏位页脚所在单元格模板。可读写。
Grid    ASPxGridView    Gets the Grid View that owns the current column.    栏位所属AspxGridView。只读。
GroupFooterCellStyle    GridViewGroupFooterStyle    Gets the style settings used to paint group  footer cells within a column.   页脚栏位分组带样式。只读。
HeaderCaptionTemplate   ITemplate   Gets or sets a template for  displaying the column header's caption. 栏位题头模板。可读写。
Index   Int Gets or sets the item's index within the collection.    栏位序号。可读写。
Name    String  Gets or sets the column's programmatic identifier.  栏位名称。可读写。
ShowInCustomizationForm Bool    Gets or sets whether the column's header is  displayed within the
Customization Window when the column is  hidden. 栏位题头(栏位隐藏时)是否显示在自定义窗口中。可读写。
ToolTip String  Gets or sets the column header's tooltip text.  微帮助。可读写。
Visible Bool    Gets or sets a value that specifies whether the column is  visible.  是否显示。可读写。
VisibleIndex    Int Gets or sets the column's position among the visible columns within a web control.  显示顺序。可读写。
Width   Unit    Gets or sets the column's width.    宽度。可读写。
3.GridViewColumn服务器端方法
方法名 语法  英文说明    中文说明
Assign  Void Assign(DevExpress.Web.ASPxClasses. CollectionItem source)  Copies the public  properties from  the specified object  to the current one.  从指定对象中复制公共属性到当前栏位。
IsClickable bool  IsClickable()  Indicates whether the column responds to mouse clicks.  判断栏位是否可以响应鼠标单击事件。当栏位有题头或AspxGridView允许排序(SettingsBehavior.AllowSort)或允许栏位拖动(SettingsBehavior.AllowDragDrop)时返回 true ,否则返回 false .
SetColVisible   void  SetColVisible( bool  value)      设置栏位是否可见。等同于Visible属性。
SetColVisibleIndex  Void SetColVisibleIndex( int  value)      设置栏位显示顺序。等同于VisibleIndex属性。
AutoFilterBy    Void AutoFilterBy( string  value)     根据指定栏位值自动过滤
(1)Assign方法举例
注意调用Assign方法后当前栏位包括名称、数据都与复制源一致。如果想使复制后数据等某些属性与复制源不同,应在调用本方法后重新改变。通常用来动态创建栏位。
例:
GridViewDataColumn c = (GridViewDataColumn)( this .ASPxGridView1.Columns[ "Creator" ]);
this .ASPxGridView1.Columns[ "Creator" ].Assign( this .ASPxGridView1.Columns[ "LogID" ]);
c.FieldName = "Creator" ;
c.Name = "Creator" ;
c.Caption = "Creator" ;
4.GridViewCommandColumn:命令按钮列
(1)栏位声明示例
"选择"  Name= "IsSelect"  ButtonType= "Button"  ShowSelectCheckbox= "true"  >
"操作"  Visible= "true" >
     "保存"  Visible= "true"  />
     "新增"  Visible= "true"  />
     "取消"  Visible= "true"  />
     "清除"  Visible= "true"  />
     "选择"  Visible= "true"  />
(2)GridViewCommandColumn服务器端重要属性
属性名 数据类型    英文说明    中文说明
AllowDragDrop   DefaultBoolean(枚举)  Gets or sets whether end-users can drag the column's header.    是否允许栏位拖动。可读写。取值范围:True,False,Default
ButtonType  ButtonType(枚举)  Gets or sets the command button's type. 按钮类型。可读写。取值范围:Button、Image、Link
CancelButton    GridViewCommandColumnButton Gets the Cancel button's settings.  取消按钮。只读。
ClearFilterButton   GridViewCommandColumnButton Gets the Clear button's settings.   清除过滤条件按钮。只读。
CustomButtons   GridViewCommandColumnCustomButtonCollection Gets the collection of custom buttons.  自定义按钮集合。只读。
DeleteButton    GridViewCommandColumnButton Gets the Delete button's settings.  删除按钮。只读。
EditButton  GridViewCommandColumnButton Gets the Edit button's settings.    编辑按钮。只读。
NewButton   GridViewCommandColumnButton Gets the New button's settings. 新增按钮。只读。
SelectButton    GridViewCommandColumnButton Gets the Select button's settings.  选择按钮。只读。
ShowSelectCheckbox  Bool    Gets or sets whether the check box used to select /deselect data rows is
shown.  是否显示选择框。可读写。
UpdateButton    GridViewCommandColumnButton Gets the Update button's settings.  保存按钮。只读。
5. GridViewDataColumn:基本数据列
(1)栏位声明示例
"LogID"  FieldName= "LogID"  ReadOnly= "true"  >               
(2)GridViewDataColumn服务器端重要属性
属性名 数据类型    英文说明    中文说明
DataItemTemplate    ITemplate   Gets or sets a template for  displaying data cells within the current column.    当前栏位显示数据的单元格模板。可读写。
EditCellStyle   GridViewEditCellStyle   Gets the style settings used to paint the column's cells within the Edit Form.  栏位编辑时样式。只读。
EditFormCaptionStyle    GridViewEditFormCaptionStyle    Gets the style settings used to paint the caption of the edit cell that
corresponds to the current column.  栏位编辑时题头样式。只读。
EditFormSettings    GridColumnEditFormSettings  Gets the settings of the edit cell which is  displayed within the Edit Form and
corresponds to the current data column. 在编辑窗口中栏位的设置
EditItemTemplate    ITemplate   Gets or sets a template for  displaying edit cells which correspond to the
current column. 当前栏位编辑数据的单元格模板。可读写。
FieldName   String  Gets or sets the name of the database field assigned to the current column. 数据库列名。可读写。
FilterCellStyle GridViewFilterCellStyle Gets the style settings used to paint a cell within the Auto Filter Row that
corresponds to the current data column. 栏位在自动过滤工具条上的样式。只读。
FilterExpression    String  Gets the column's filter expression.    栏位过滤表达式。只读。在调用AspxGridView的AutoFilterByColumn()方法自动设置栏位过滤表达式。
GroupIndex  int  Gets or sets a value that specifies whether the column takes part in
grouping and at which level.    栏位分组层次。可读写。
PropertiesEdit  EditPropertiesBase  Gets or sets the column editor's settings.  栏位编辑器设置。可读写。
PropertiesEditType  string   Gets or sets the type of the column's editor.   栏位编辑器类型。可读写。
ReadOnly    Bool    Gets or sets whether end-users are allowed to edit the column's cell values.    是否只读。可读写。
Settings    GridViewDataColumnSettings  Provides access to the column's options.    提供访问栏位选项的对象。只读。
SortIndex   Int Gets or sets the column's position among sorted columns.    栏位排序次序。可读写。
SortOrder   ColumnSortOrder(枚举) Gets or sets the column's sort order.   栏位排序方式。可读写。取值范围:None,Ascending,      Descending
UnboundType UnboundColumnType(枚举)   Gets or sets the data type and binding mode of the column.  栏位绑定数据类型。可读写。取值范围:Bound,Integer,Decimal, DateTime,        String,Boolean,Object。
(3)GridViewDataColumn服务器端重要方法
方法名 语法  英文说明    中文说明
Assign  Void Assign(DevExpress.Web.ASPxClasses. CollectionItem source)  Copies the public  properties from  the specified object  to the current one.  从指定对象中复制公共属性到当前栏位。
AutoFilterBy    Void AutoFilterBy( string  value) Applies a filter to the column. 根据指定栏位值自动过滤
GroupBy void  GroupBy()  Groups data by  the values of the current column.    按当前栏位分组。可以调用UnGroup方法打散分组。
SortAscending   void  SortAscending()    Sorts the column in  ascending  order.    按当前栏位值正序排序
SortDescending  Void SortDescending()   Sorts the column in  descending  order.   按当前栏位值倒序排序
UnGroup void  UnGroup()  Ungroups data by  the values of the current column.  取消当前栏位分组
UnSort  Void UnSort()   Clears the sorting applied to the column.   取消当前栏位排序
 
6.GridViewDataButtonEditColumn:编辑按钮列
(1) 栏位声明示例
"备注"  FieldName= "Remark"  >
     "空"  />
(2) 独特属性
GridViewDataButtonEditColumn继承自GridViewDataColumn,它包括以下独特属性:
属性名 数据类型    英文说明    中文说明
PropertiesButtonEdit    ButtonEditProperties    Gets the column editor's settings.  栏位编辑器属性
7.GridViewDataCheckColumn: 复选框列
 
8.GridViewDataTextColumn:文本列
(1)GridViewDataTextColumn服务器端重要属性
属性名 数据类型    英文说明    中文说明
             
 
 
二十四、    栏位格式化
二十五、    固定列
AspxGridView的固定列是通过设置栏位的FixedStyle=”Left”来实现的。
Asp.net中设置:FixedStyle=”Left”
C#中设置:FixedStyle = GridViewColumnFixedStyle.Left
二十六、    栏位拖动
设置SettingsBehavior.AllowDragDrop= true 则允许栏位拖动。
调用客户端方法MoveColumn可在前台实现代码拖动。支持用户使用鼠标拖动栏位。
二十七、    栏位合计
AspxGridView的汇总数据是显示在Footer带上的,必须设置Settings.ShowFooter= true 。直接显示在栏位下方。
可以将汇总信息定义在标签中。
例:
     "Event"  SummaryType= "Count"  />
     "OCCDatetime"  SummaryType= "Min"  />
     "OCCDatetime"  SummaryType= "Max"  />
AspxGridView内置的聚合函数包括:Sum、Min、Max、Count、Average、Custom、None。
二十八、    栏位初始值
AspxGridView要设置栏位新增时初始值需要扩充其InitNewRow事件。代码的主要功能是给e.NewValues[栏位名称]赋值。
事件原型:
protected  void   ASPxGridView1_InitNewRow( object  sender, DevExpress.Web.Data.ASPxDataInitNewRowEventArgs e)
DevExpress.Web.Data.ASPxDataInitNewRowEventArgs属性:
NewValues:System.Collections.Specialized.OrderedDictionary类型
例:
//设置栏位初始值
protected  void   ASPxGridView1_InitNewRow( object  sender, DevExpress.Web.Data.ASPxDataInitNewRowEventArgs e)
{
     e.NewValues[ "CreateDate" ] = DateTime.Now;   
}
二十九、    栏位可编辑性
三十、 栏位数据校验
1.行数据校验(编辑状态)
调用DoRowValidation()可以进行行数据校验。它实际上是触发RowValidating事件编写代码实现数据校验的。DoRowValidation方法对浏览状态的行无效,可以通过获取AspxGridView的IsEditing属性判断是否进入编辑状态。
RowValidating事件原型:
void  ASPxGridView1_RowValidating( object  sender, DevExpress.Web.Data.ASPxDataValidationEventArgs e)
DevExpress.Web.Data.ASPxDataValidationEventArgs构造函数:
public  ASPxDataValidationEventArgs( bool  isNew);
DevExpress.Web.Data.ASPxDataValidationEventArgs属性:
Errors: Dictionary string >,行错误集合,只读。
HasErrors: bool ,待处理的行是否有错。只读。
IsNewRow: bool ,待处理的行是否新增行。只读。
Keys:OrderedDictionary,要删除行的主键栏位值。只读。
NewValues: OrderedDictionary,要删除行的非主键(实际上是所有栏位)栏位新值。只读。
OldValues: OrderedDictionary,要删除行的非主键(实际上是所有栏位)栏位原值。只读。
RowError: string ,行错误信息。可读写。
通常在RowValidating事件中检查栏位值是否有效,如果无效,应抛出异常。
例:
//行数据检验事件
protected  void  ASPxGridView1_RowValidating( object  sender, DevExpress.Web.Data.ASPxDataValidationEventArgs e)
{
     
     //是否新增行
     if  (e.IsNewRow)
     {
         if  (e.NewValues[ "Event" ] == null )
         {                   
             e.Errors.Add( this .ASPxGridView1.Columns[ "Event" ], "事件名称不可为空" );
             e.RowError = "事件名称不可为空" ;
             throw  new  Exception( "事件名称不可为空" );
 
         }
     }
}
通常在HtmlRowPrepared事件中检查行是否有效并以不同的颜色来显示未通过校验的行。
通常在StartRowEditing事件中调用DoRowValidation方法触发数据校验。
以下是官方的示例代码:
using  DevExpress.Web.ASPxGridView;
using  System.Collections.Generic;
 
protected  void  grid_RowValidating( object  sender,
DevExpress.Web.Data.ASPxDataValidationEventArgs e) {
     // Checks for null values.
     foreach  (GridViewColumn column in  grid.Columns) {
         GridViewDataColumn dataColumn = column as  GridViewDataColumn;
         if  (dataColumn == null ) continue ;
         if  (e.NewValues[dataColumn.FieldName] == null )
             e.Errors[dataColumn] = "Value cannot be null." ;
     }
     // Displays the error row if there is at least one error.
     if  (e.Errors.Count > 0) e.RowError = "Please, fill all fields." ;
     
     if  (e.NewValues[ "ContactName" ] != null  &&
         e.NewValues[ "ContactName" ].ToString().Length < 2) {
         AddError(e.Errors, grid.Columns[ "ContactName" ],
         "Contact Name must be at least two characters long." );
     }
     if  (e.NewValues[ "CompanyName" ] != null  &&
     e.NewValues[ "CompanyName" ].ToString().Length < 2) {
         AddError(e.Errors, grid.Columns[ "CompanyName" ],
         "Company Name must be at least two characters long." );
     }
     if  ( string .IsNullOrEmpty(e.RowError) && e.Errors.Count > 0)
     e.RowError = "Please, correct all errors." ;
}
 
void  AddError(Dictionary string > errors,
GridViewColumn column, string  errorText) {
      if (errors.ContainsKey(column)) return ;
      errors[column] = errorText;
  }
 
protected  void  grid_HtmlRowPrepared( object  sender,
ASPxGridViewTableRowEventArgs e) {
     // Checks whether the generated row has the errors.
     bool  hasError = e.GetValue( "ContactName" ).ToString().Length <= 1;
     hasError = hasError || e.GetValue( "CompanyName" ).ToString().Length <= 1;
     hasError = hasError || e.GetValue( "Country" ) == null ;
     // If the row has the error(s), its text color is set to red.
     if  (hasError)
         e.Row.ForeColor = System.Drawing.Color.Red;
}
 
protected  void  grid_StartRowEditing( object  sender,
DevExpress.Web.Data.ASPxStartRowEditingEventArgs e) {
     // Validates the edited row if it isn't a new row,.
     if  (!grid.IsNewRowEditing)
         grid.DoRowValidation();
}
 
三十一、    客户端事件
三十二、    服务器端事件
1.服务器事件索引
事件名 英文说明    中文说明
AutoFilterCellEditorCreate  Enables you to assign editors to individual filter row cells.   允许程序员为过滤行栏位指定个性化编辑器
AutoFilterCellEditorInitialize  Enables the cell editors displayed within the auto filter row cells to be
initialized.    允许程序员为过滤行栏位指定显示格式
BeforeGetCallbackResult Occurs after a callback, when the ASPxGridView is  loaded, but prior to rendering.   发生在ASPxGridView已装载但未呈现时获取回调结果。
2.AutoFilterCellEditorCreate
(1)语法: public  delegate  void  ASPxGridViewEditorCreateEventHandler( object  sender,
ASPxGridViewEditorCreateEventArgs e);
ASPxGridViewEditorCreateEventArgs类包括以下属性:
Column:GridViewDataColumn类型,只读。栏位实例。
EditorProperties:EditPropertiesBase类型,可读写。编辑器属性。
KeyValue: object 类型。只读。关键栏位值。
Value: object 类型。可读写。过滤栏位值。
VisibleIndex: int 类型。只读。行号。
(2)英文说明:Enables you to assign editors to individual filter row cells.
(3)触发条件:必须显示了自动过滤工具条
要显示自动过滤行应该做如下设置:
this .ASPxGridView1.Settings.ShowFilterBar = DevExpress.Web.ASPxGridView.GridViewStatusBarMode.Visible; //显示自动过滤工具条
this .ASPxGridView1.Settings.ShowFilterRow = true ; //显示自动过滤行
(4)中文说明:允许程序员为过滤行栏位指定个性化编辑器。
通常在该事件中初始化过滤行栏位的初始值、提供符合用户操作习惯的栏位编辑器(如采用下拉列表)
例:
switch  (e.Column.FieldName)
{
     case  "OCCDatetime" :
         e.Value = DateTime.Now;
         break ;
     default :
         break ;
}
3.AutoFilterCellEditorInitialize
(1)语法: public  delegate  void  ASPxGridViewEditorEventHandler( object  sender,ASPxGridViewEditorEventArgs e);
ASPxGridViewEditorEventArgs类包括以下属性:
Column:GridViewDataColumn类型,只读。栏位实例。
Editor:ASPxEditBase类型,只读。编辑器实例。
KeyValue: object 类型。只读。关键栏位值。
Value: object 类型。只读。过滤栏位值。
VisibleIndex: int 类型。只读。行号。
(2)英文说明:Enables the cell editors displayed within the auto filter row cells to be initialized.
(3)触发条件:必须显示了自动过滤工具条
要显示自动过滤行应该做如下设置:
this .ASPxGridView1.Settings.ShowFilterBar = DevExpress.Web.ASPxGridView.GridViewStatusBarMode.Visible; //显示自动过滤工具条
this .ASPxGridView1.Settings.ShowFilterRow = true ; //显示自动过滤行
(4)中文说明:允许程序员为过滤行栏位指定显示格式。
该事件是在AutoFilterCellEditorCreate事件后执行的,可以在此事件中覆盖AutoFilterCellEditorCreate事件中所指定的属性。
例:
switch  (e.Column.FieldName)
{
     case  "OCCDatetime" :
         e.Editor.BackColor = System.Drawing.Color.Yellow;
         break ;
     default :
         break ;
}
4.BeforeGetCallbackResult
(1)语法: public  delegate  void  EventHandler( object  sender, EventArgs e);
(2)英文说明:Occurs after a callback, when the ASPxGridView is  loaded, but prior to rendering.
(3)触发条件:调用AspxGridView客户端方法GetValuesOnCustomCallback。
(4)中文说明:发生在ASPxGridView已装载但未呈现时获取回调结果。
5.BeforePerformDataSelect
(1)语法: public  delegate  void  EventHandler( object  sender, EventArgs e);
(2)英文说明:Occurs before the ASPxGridView control obtains data from  a data source.
(3)触发条件:绑定数据时。
(4)中文说明:发生在ASPxGridView从数据源中获取数据之前。
通常在主从模式下用于给明细AspxGridView的数据检索参数赋值。
例:
Session[ "TaskCode" ] = (sender as  ASPxGridView).GetMasterRowKeyValue();
//Session["TaskCode"]为明细AspxGridView的数据源参数
6.CancelRowEditing
(1)语法: public  delegate  void  ASPxStartRowEditingEventHandler( object  sender,
ASPxStartRowEditingEventArgs e);
ASPxStartRowEditingEventArgs类包括以下属性:
Cancel: bool 类型。可读写。
(2)英文说明:Enables you to prevent changes made within a row from  being discarded.
(3)触发条件:用户点击内置的【取消】按钮或调用CancelEdit()方法时。
(4)中文说明:取消行编辑状态前事件。
可以在该事件中阻止用户将编辑状态转换为浏览状态。(设置e.Cancel= true )例如弹出对话框提醒用户是否确实需要取消编辑状态或清除在编辑过程中缓存的数据。
7. CellEditorInitialize
(1)语法: public  delegate  void  ASPxGridViewEditorEventHandler( object  sender,
ASPxGridViewEditorEventArgs e);
ASPxGridViewEditorEventArgs类包括以下属性:
Column:GridViewDataColumn类型,只读。栏位实例。
Editor:ASPxEditBase类型,只读。编辑器实例。
KeyValue: object 类型。只读。主键栏位值。
Value: object 类型。只读。过滤栏位值。
VisibleIndex: int 类型。只读。行号。
(2)英文说明:Enables the cell editors displayed within the edit cells to be initialized.
(3)触发条件:发生在行数据状态由浏览状态改为编辑状态时。
(4)中文说明:栏位编辑器初始化事件。
7. ClientLayout
(1)语法: public  delegate  void  ASPxClientLayoutHandler( object  sender,
ASPxClientLayoutArgs e);
ASPxClientLayoutArgs类包括以下属性:
LayoutData: string 类型,可读写。布局数据。
LayoutMode: ClientLayoutMode类型(枚举)。只读。布局模式。取值范围:Loading、Saving.
  (2)英文说明:Enables you to save and restore the previously saved layout of the ASPxGridView.
(3)触发条件:在调用SaveLayout()保存布局或LoadLayout()装载布局时触发该事件。
(4)中文说明:允许你保存布局或装载之前的布局。
8. CustomButtonCallback
(1)语法: public  delegate  void  ASPxGridViewCustomButtonCallbackEventHandler( object  sender,ASPxGridViewCustomButtonCallbackEventArgs e);
ASPxGridViewCustomButtonCallbackEventArgs类包括以下属性:
ButtonID: string 类型,只读。按钮名称。
VisibleIndex: int 类型。只读。行号。
  (2)英文说明:Occurs when a custom command button has been clicked.
(3)触发条件:点击自定义按钮时触发。
(4)中文说明:该事件不能只在页面IsPostBack= false 的情况下声明,否则无法触发。
自定义按钮可以在标签中定义。
例:
"操作"  Visible= "true" >   
    
         "btnSelect"  Text= "自定义选择"  Visibility= "AllDataRows"  />
    
通常在该事件中捕获按钮名称调用对应方法作出实际的回应。
例:
string  id = e.ButtonID;
switch  (id)
{
     case  "btnSelect" :
         this .ASPxGridView1.Selection.SelectRow(e.VisibleIndex);
         break ;
     default :
         break ;
}
9. CustomCallback
(1)语法: public  delegate  void  ASPxGridViewCustomCallbackEventHandler( object  sender, ASPxGridViewCustomCallbackEventArgs e);
ASPxGridViewCustomCallbackEventArgs类包括以下属性:
Parameters: string 类型,只读。所有自定义参数值。
(2)英文说明:Fires when a round trip to the server has been initiated by  a call to the client ASPxClientGridView.PerformCallback method.
(3)触发条件:调用客户端PerformCallback方法时触发。
(4)中文说明:该事件不能只在页面IsPostBack= false 的情况下声明,否则无法触发。事件参数ASPxGridViewCustomCallbackEventArgs. Parameters由程序员负责解释。
例:
//自定义回调事件
protected  void  ASPxGridView1_CustomCallback( object  sender, ASPxGridViewCustomCallbackEventArgs e)
{
     if (e.Parameters.Length > 0)
     {
         int  visibleIndex = 0;
         string [] parameterList = e.Parameters.Split( '|' ); //取参数列表
         if  (parameterList.Length > 0)
         {
             switch (parameterList[0].ToString().ToLower())
             {
                 case  "addnewrow" : //新增
                     this .ASPxGridView1.AddNewRow();
                     break ;
                 case  "startedit" : //修改
                     if  (parameterList.Length >= 2)
                     {
                         if  (Int32.TryParse(parameterList[1], out  visibleIndex))
                         {
                             this .ASPxGridView1.StartEdit(visibleIndex);
                         }
                     }
                     break ;
                 default :
                     break ;
             }
         }             
     }
}
前台代码示例:
Grid.PerformCallback( 'AddNewRow' )
Grid.PerformCallback( 'StartEdit|2' )
10. CustomColumnDisplayText
(1)语法: public  delegate  void  ASPxGridViewColumnDisplayTextEventHandler( object  sender, ASPxGridViewColumnDisplayTextEventArgs e);
ASPxGridViewColumnDisplayTextEventArgs类包括以下属性:
Column:GridViewDataColumn类型,只读。栏位实例。
DisplayText: string 类型。可读写。显示文本。
Value: object 类型。可读写。栏位值。
VisibleRowIndex: int 类型。只读。行号。
ASPxGridViewColumnDisplayTextEventArgs类包括以下方法:
object  GetFieldValue( string  fieldName):获取栏位值。
object  GetFieldValue( int  visibleRowIndex, string  fieldName) :获取栏位值。
(2)英文说明:Enables custom display text to be provided for  any cell.
(3)触发条件:发生在栏位绑定或取消绑定时。
(4)中文说明:允许你自定义每个单元格的显示文本。比如在数据导出时将栏位值为0改为空值。
11. CustomColumnGroup
(1)语法: public  delegate  void  ASPxGridViewCustomColumnSortEventHandler( object  sender, CustomColumnSortEventArgs e);
CustomColumnSortEventArgs类包括以下属性:
Column:GridViewDataColumn类型,可读写。栏位实例。
Handled: bool 类型。可读写。是否已处理。
ListSourceRowIndex1: int 类型,只读。来源行号1。
ListSourceRowIndex2: int 类型,只读。来源行号2。
Result: int 类型,可读写。分组结果。0表示划入同一组,1或-1表示划入不同组。
SortOrder:ColumnSortOrder类型(枚举),只读。排序方式。
Value1: object 类型,只读。值1.
Value2: object 类型,只读。值2.
ASPxGridViewColumnDisplayTextEventArgs类包括以下方法:
object  GetRow1Value( string  fieldName):获取来源行1的值。
object  GetRow2Value( string  fieldName):获取来源行2的值。
(2)英文说明:Provides the ability to group  data using  custom rules.
(3)触发条件:只有当栏位的SortMode=”Custom”并且在执行数据分组时才会触发该事件。
(4)中文说明:使用自定义规则分组数据。
当启用自定义的分组规则后应该设置e.Handled= true ,否则仍按缺省规则。
该事件是上下两行逐行比较,会多次触发,尽量少用该事件并保持代码简洁。
例:调用分组
((GridViewDataColumn) this .ASPxGridView1.Columns[ "Score" ]).Settings.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
this .ASPxGridView1.GroupBy( this .ASPxGridView1.Columns[ "Score" ]);
例:划分分组
if  (e.Column.FieldName == "Score" )
{
     if  ((( int )e.Value1 < 60 && ( int )e.Value2 < 60)
         || (( int )e.Value1 >= 60 && ( int )e.Value1 < 80 && ( int )e.Value2 >= 60 && ( int )e.Value2 < 80)
         || (( int )e.Value1 >= 80 && ( int )e.Value1 < 100 && ( int )e.Value2 >= 80 && ( int )e.Value2 < 100)
         || (( int )e.Value1 >= 100 && ( int )e.Value2 >= 100))
     {
         e.Result = 0;
         e.Handled = true ;
     }
}
12. CustomColumnSort
(1)语法: public  delegate  void  ASPxGridViewCustomColumnSortEventHandler( object  sender, CustomColumnSortEventArgs e);
CustomColumnSortEventArgs类包括以下属性:
Column:GridViewDataColumn类型,可读写。栏位实例。
Handled: bool 类型。可读写。是否已处理。
ListSourceRowIndex1: int 类型,只读。来源行号1。
ListSourceRowIndex2: int 类型,只读。来源行号2。
Result: int 类型,可读写。分组结果。1表示前一个值小于后一个值,0表示前后两个值相同,-1表示前一个值大于后一个值。
SortOrder:ColumnSortOrder类型(枚举),只读。排序方式。
Value1: object 类型,只读。值1.
Value2: object 类型,只读。值2.
ASPxGridViewColumnDisplayTextEventArgs类包括以下方法:
object  GetRow1Value( string  fieldName):获取来源行1的值。
object  GetRow2Value( string  fieldName):获取来源行2的值。
(2)英文说明:Enables you to sort data using  custom rules.
(3)触发条件:只有当栏位的SortMode=”Custom”并且在执行数据排序时才会触发该事件。
(4)中文说明:使用自定义规则排序数据。
当启用自定义的排序规则后应该设置e.Handled= true ,否则仍按缺省规则。
该事件是上下两行逐行比较,会多次触发,尽量少用该事件并保持代码简洁。
例:调用排序
((GridViewDataColumn) this .ASPxGridView1.Columns[ "Event" ]).Settings.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
this .ASPxGridView1.SortBy( this .ASPxGridView1.Columns[ "Event" ]);
例:自定义栏位排序
if  (e.Column.FieldName == "Event" )
{
     if  (e.SortOrder == DevExpress.Data.ColumnSortOrder.Ascending)
     {
         //按栏位长度正序
         if  (e.Value1.ToString().Length < e.Value2.ToString().Length)
         {
             e.Result = 1;
         }
         else  if  (e.Value1.ToString().Length == e.Value2.ToString().Length)
         {
             e.Result = 0;
         }
         else  if  (e.Value1.ToString().Length > e.Value2.ToString().Length)
         {
             e.Result = -1;
         }
     }
     else  if  (e.SortOrder == DevExpress.Data.ColumnSortOrder.Descending)
     {
         //按栏位长度倒序
         if  (e.Value1.ToString().Length < e.Value2.ToString().Length)
         {
             e.Result = -1;
         }
         else  if  (e.Value1.ToString().Length == e.Value2.ToString().Length)
         {
             e.Result = 0;
         }
         else  if  (e.Value1.ToString().Length > e.Value2.ToString().Length)
         {
             e.Result = 1;
         }
     }
     e.Handled = true ;
}
13. CustomDataCallback
(1)语法: public  delegate  void  ASPxGridViewCustomDataCallbackEventHandler( object  sender, ASPxGridViewCustomDataCallbackEventArgs e);
ASPxGridViewCustomDataCallbackEventArgs类包括以下属性:
Parameters: string 类型,只读。自定义参数。
Result: object 类型。可读写。自定义处理结果。
(2)英文说明:Fires when a round trip to the server has been initiated by  a call to the client ASPxClientGridView.GetValuesOnCustomCallback method.
(3)触发条件:调用AspxGridView客户端方法GetValuesOnCustomCallback时触发本事件。
(4)中文说明: 程序员可以获取传入参数(e.Parameters)作出回应(设置Result值)。
客户端调用GetValuesOnCustomCallback方法,后台CustomDataCallback事件返回结果,然后在GetValuesOnCustomCallback方法中指定的javascrip方法中显示处理结果。
例:前台代码
function GetDate() {
     grid.GetValuesOnCustomCallback( "GetDate" , GetDateCallback);
}
function GetDateCallback(result) {
     alert(result);
}
例:后台代码
if  (e.Parameters == "GetDate" )
{
     e.Result = DateTime.Now.ToShortDateString();
}
14. CustomErrorText
(1)语法: public  delegate  void  ASPxGridViewCustomErrorTextEventHandler( object  sender, ASPxGridViewCustomErrorTextEventArgs e);
ASPxGridViewCustomErrorTextEventArgs类包括以下属性:
ErrorText: string 类型,可读写。错误文本。
ErrorTextKind: GridViewErrorTextKind类型(枚举)。只读。错误来源类型。取值范围:General、RowValidate。
Exception:Exception类型。只读。异常。
(2)英文说明:Enables you to provide custom error descriptions.
(3)触发条件:当AspxGridView发生错误时触发该事件
(4)中文说明:允许你自定义错误描述。
你可以在该事件中本地化错误文本。在RowValidating事件中抛出的异常,ErrorTextKind=GridViewErrorTextKind.RowValidate,其它情况下ErrorTextKind=GridViewErrorTextKind.General。
15. CustomGroupDisplayText
(1)语法: public  delegate  void  ASPxGridViewColumnDisplayTextEventHandler ( object  sender, ASPxGridViewColumnDisplayTextEventArgs e);
ASPxGridViewColumnDisplayTextEventArgs类包括以下属性:
Column:GridViewDataColumn类型,只读。栏位实例。
DisplayText: string 类型。可读写。显示文本。
Value: object 类型。可读写。栏位值。
VisibleRowIndex: int 类型。只读。行号。
ASPxGridViewColumnDisplayTextEventArgs类包括以下方法:
object  GetFieldValue( string  fieldName):获取栏位值。
object  GetFieldValue( int  visibleRowIndex, string  fieldName) :获取栏位值。
(2)英文说明:Enables you to provide custom content for  group  rows.
(3)触发条件:显示分组数据时触发。
(4)中文说明:允许你自定义分组行内容。
16. CustomJSProperties
(1)语法: public  delegate  void  ASPxGridViewClientJSPropertiesEventHandler ( object  sender, ASPxGridViewClientJSPropertiesEventArgs e);
ASPxGridViewClientJSPropertiesEventArgs类包括以下属性:
Properties:Dictionary< string , object >类型,只读。Js属性。
(2)英文说明:Enables you to supply any server data that can then be parsed on  the client.
(3)触发条件:发生在AspxGridView呈现时。
(4)中文说明:允许你自定义客户端属性。要求属性名必须以“cp”作为前缀。你可以在此事件中自行解释JS属性。
例:C#代码
//自定义js属性
protected  void  ASPxGridView1_CustomJSProperties( object  sender, ASPxGridViewClientJSPropertiesEventArgs e)
{
     e.Properties[ "cpVisibleRowCount" ] = this .ASPxGridView1.VisibleRowCount;
}
例:客户端代码
alert(grid.cpVisibleRowCount);
17. CustomSummaryCalculate
(1)语法: public  delegate  void  CustomSummaryEventHandler ( object  sender, CustomSummaryEventArgs e);
CustomSummaryEventArgs类包括以下属性:
FieldValue: object 类型,只读。栏位值。
GroupLevel: int 类型,只读。分组节号。
GroupRowHandle: int 类型,只读。分组行号。
IsGroupSummary: bool 类型,只读。是否组汇总。
 
(2)英文说明:Enables you to calculate summary values manually.
(3)触发条件:发生在AspxGridView呈现时。
(4)中文说明:允许你自定义客户端属性。要求属性名必须以“cp”作为前缀。你可以在此事件中自行解释JS属性。
例:C#代码
//自定义js属性
protected  void  ASPxGridView1_CustomJSProperties( object  sender, ASPxGridViewClientJSPropertiesEventArgs e)
{
     e.Properties[ "cpVisibleRowCount" ] = this .ASPxGridView1.VisibleRowCount;
}
例:客户端代码
alert(grid.cpVisibleRowCount);
 
 
三十三、    快捷键
三十四、    样式
AspxGridView使用标签用于设置样式。
1.GridViewStyles重要属性
属性名 数据类型    英文说明    中文说明
AlternatingRow  GridViewAlternatingRowStyle Gets the style settings used to paint Alternating Data Row. 奇偶行样式
CommandColumn   GridViewCommandColumnStyle  Gets the style settings used to paint the Command Column's cells.   命令栏位样式
Header  GridViewHeaderStyle Gets the style settings used to paint column headers.   栏位题头样式
2. GridViewAlternatingRowStyle重要属性
属性名 数据类型    英文说明    中文说明
Enabled DefaultBoolean(枚举)  Gets or sets whether the style settings used to paint alternating rows are
enabled.    是否启用奇偶行样式。可读写。取值范围:True、False、Default
 
三十五、    AspxGridView服务器端重要属性
属性名 数据类型    英文说明    中文说明
DataSource  Object  Gets or sets the object  from  which the data-bound control retrieves its list of data items. 数据源。所支持的数据源类型包括:SqlDataSource、ObjectDataSource、XmlDataSource、AccessDataSource、SiteMapDatasource
DataSourceID    String  Gets or sets the ID of the control from  which the data-bound control retrieves its list of data items.  数据源ID.
             
 
三十六、    AspxGridView服务器端重要方法
方法名 参数  英文说明    中文说明
Void AddNewRow()    无   Adds a new  record.  新增行
Void AutoFilterByColumn(GridViewColumn collmn, string  value) column:要过滤的栏位
value:要过滤的栏位值(可以使用通配符)  Applies a filter to the specified data column.  按指定栏位过滤
Void CancelEdit()   无   Cancels all the changes made and switches the ASPxGridView to browse mode.  取消编辑模式。终端用户还可以通过点击【取消】按钮来取消编辑模式。
Void ClearSort()    无   Clears sorting applied to the ASPxGridView. 清除排序规则。如果有分组,将打散分组。
Void DeleteRow( int  visibleIndex)    visibleIndex:行号 Deletes the specified row.  删除指定行。
Void DoRowValidation()  无   Validates the row currently being edited.   行数据校验。
String SaveClientLayout()   无   Saves the ASPxGridView's layout.    保存布局。
Void LoadClientLayout( string  layoutData)    layoutData:布局数据 Restores the ASPxGridView's layout from  the specified string .   还原布局。
三十七、    GridViewColumnCollection服务器端重要属性
属性名 数据类型    英文说明    中文说明
Count   Int Gets the GridView columns count.    栏位个数
Grid    AspxGridView    Gets the Grid View that owns the collection.    对应AspxGridView
Item    GridViewColumn  Returns the column with the specified name, field name or caption.  GridView栏位
Owner   DevExpress.Web.ASPxClasses.IWebControlObject    Gets or sets the collection's owner.    父容器
三十八、    AspxGridView客户端重要属性
属性名 数据类型    英文说明    中文说明
selectedWithoutPageRowCount Int     不在当前页的选中行数
activeElement   Variant    
allowFocusedRow Boolean    
allowMultipleCallbacks  Boolean    
allowMultiSelection Boolean    
autoFilterDelay String     
autoPostBack    Boolean    
BeginCallback   Object     
CallbackError   Object     
callbackOnFocusedRowChanged Boolean    
callbackOnSelectionChanged  Boolean    
callBacksEnabled    Boolean    
childrenCache   Object     
clientEnabled   Boolean    
clientVisible   Boolean    
ColumnGrouping  Object     
ColumnMoving    Object     
ColumnResizing  Object     
columns Object     
ColumnSorting   Object     
ColumnStartDragging Object     
confirmDelete   String     
ContextMenu Object     
CustomButtonClick   Object     
CustomizationWindowCloseUp  Object     
custwindowLeft  Variant    
custwindowTop   Variant    
custwindowVisible   Variant    
DetailRowCollapsing Object     
DetailRowExpanding  Object     
dialogContentHashTable  Object     
editorIDList    Object     
enabled Boolean    
EndCallback Object     
filterKeyPressInputValue    String     
filterKeyPressTimerId   Number     
filterPopupActiveColumnIndex    Number     
filterPopupWindow   Variant    
filterRowConditions Object     
filterRowMenuColumnIndex    Number     
fixedColumnCount    Number     
FocusedRowChanged   Object     
focusedRowIndex Number     
funcCallbacks   Object     
indentColumnCount   Number     
Init    Object     
initialFocused  Boolean    
isASPxClientControl Boolean    
isColumnsResizable  Boolean    
isHorizontalScrolling   Boolean    
isInitialized   Boolean    
isMainControlResizable  Boolean    
isNative    Boolean    
isPagerUiCallback   Boolean    
isVerticalScrolling Boolean    
keys    Object     
lastMultiSelectIndex    Number     
leadingAfterInitCall    Boolean    
loadingDivElement   Variant    
loadingPanelElement Variant    
lockFilter  Boolean    
lockVirtualScrolling    Boolean    
mainElement DispHTMLTable      
name    String     
pageRowCount    Number     
pageRowSize Number     
renderIFrameForPopupElements    Boolean    
requestCount    Number     
RowClick    Object     
RowCollapsing   Object     
RowDblClick Object     
RowExpanding    Object     
savedCallbacks  Variant    
savedScrollPosition Number     
scrollToRowIndex    Number     
selectedWithoutPageRowCount Number     
SelectionChanged    Object     
serverEvents    Object     
sizeCorrectedOnce   Boolean    
uniqueID    String     
userChangedSelection    Boolean    
virtualScrollRowHeight  Number     
virtualScrollTimerId    Number     
visibleStartIndex   Number     
 
三十九、    AspxGridView客户端常用方法
方法名及语法  英文说明    中文说明
String GetRowKey(visibleIndex: int )      获取行主键值
ASPxClientGridViewColumn _getColumn(index: int )  Returns the client column that resides at the specified position within the column collection.  根据栏位序号取栏位对象。与GetColumn方法功能相同。
ASPxClientGridViewColumn  _getColumnByField(fieldname: string )   Returns the client column which is  bound to the specified data source field.    根据栏位名称取栏位对象。与GetColumnByField方法功能相同。
ASPxClientGridViewColumn  _getColumnById(id: string ) Returns the column with the specified unique identifier.    根据栏位id取栏位对象。与GetColumnById方法功能相同。
1.Int _getColumnIndexByColumnArgs(column: string )
2. int   _getColumnIndexByColumnArgs(column: ASPxClientGridViewColumn)        根据栏位名称或栏位对象取栏位序号。
1.ASPxClientGridViewColumn  _getColumnObjectByArg(arg: int )
2.ASPxClientGridViewColumn  _getColumnObjectByArg(arg: ASPxClientGridViewColumn)
3.ASPxClientGridViewColumn  _getColumnObjectByArg(arg: string )       取栏位对象。参数可以是:1.栏位序号;2.栏位对象;3.栏位名称;4.栏位id
Int _getColumnsCount()      取栏位个数
List _getEditors()        取所有栏位编辑器列表。返回的是一个 object 数组。只有当AspxGridView进入编辑状态时才能获取到编辑器。通常是Html元素的text、checkbox、button类型。
Int _getFocusedRowIndex()   Returns the focused row's index.    取焦点行号。只有设置AllowFocusedRow= "true" 才能取到焦点行号。与GetFocusedRowIndex功能相同。
Int _getNumberFromEndOfString(st: string )        从后往前取字符串对应数字。只返回整数,不取小数点前数字字符。该函数有BUG,会出现死循环,不要调用。
Int _getRowIndexOnPage(visibleIndex: int )        取指定行在页面上处于第几行。默认等于行号。(从0开始计数)
Int _getSelectedRowCount()  Returns the number of selected rows.    取选中行数。与GetSelectedRowCount功能相同。
Bool _isGroupRow(row: int )   Indicates whether the specified row is  a group  row. 判断指定行是否分组行。与IsGroupRow方法功能相同。
Bool _isRowSelected(visibleIndex: int )       判断指定行是否被选中。
Void _selectAllRowsOnPage( checked : bool ) Selects all unselected rows displayed on  the current page.  选中或取消选中当前页中所有行。与SelectAllRowsOnPage方法等效。
Void _selectAllSelBtn( checked : bool )     将所有行中的选择列置为选中状态或取消选择状态。不影响行的选中状态,在翻页时会丢弃。选择列可以使用以下方式定义:
"选择"  Name= "IsSelect"  ButtonType= "Button"  ShowSelectCheckbox= "true" >               
Void _setFocusedRowIndex(visibleIndex: int )  Moves focus to the specified row.   设置指定行为焦点行。与SetFocusedRowIndex方法功能相同。
Void _updateEdit()  Saves all the changes made and switches the ASPxGridView to browse
mode.   更新数据。与UpdateEdit方法功能相同。
void  AddNewRow()    Adds a new  record.  新增行
Void ApplyFilter(filterExpression : String) Applies the specified filter expression to the ASPxGridView.    应用过滤表达式。与设置AspxGridView的FilterExpression等效。
1: void  AutoFilterByColumn(column: ASPxClientGridViewColumn, val: string );
2: void  AutoFilterByColumn(columnIndex: int , var : string );
3: void  AutoFilterByColumn(columnFieldNameOrId: string , val: string );  Applies a filter to the specified data column.  按指定栏位值过滤
Void CancelEdit()   Cancels all the changes made and switches the ASPxGridView to browse
mode.   取消编辑
Void ClearFilter()  Clears the filter expression applied to a client ASPxGridView.  清除过滤表达式
Void CollapseAll()  Collapses all group  rows.   收缩所有分组数据行
Void CollapseAllDetailRows()    Collapses all detail rows.  收缩所有明细数据行
Void CollapseDetailRow(visibleIndex : int )  Collapses the specified detail row. 收货指定明细数据行
1. void  CollapseRow( int  visibleIndex)
2. void  CollapseRow( int  visibleIndex, bool  recursive);   Collapses the specified group  row and optionally child group
rows at all nesting levels. 收缩指定分组数据行.(允许递归)
Void DeleteRow(visibleIndex : int )  Deletes the specified row.  删除指定行。
Void ExpandAll()    Expands all group  rows. 展开所有分组数据行。
Void ExpandAllDetailRows()  Expands all detail rows.    展开所有明细数据行。
Void ExpandDetailRow(
visibleIndex : int ) Expands the specified detail row.   展开指定明细数据行。
1. void  ExpandRow( int  visibleIndex)
2. void  ExpandRow( int  visibleIndex, bool  recursive); Expands the specified group  row preserving the collapsed state of any child group  row.  展开指定分组数据行。可以递归。
1. void  FocusEditor(ASPxClientGridViewColumn
column)
2. void  FocusEditor( int  columnIndex)
3. void  FocusEditor( string  columnFieldNameOrId) Moves focus to the specified edit cell within the edited row.   将光标移动到指定栏位编辑器中。可以传递3种参数。
Bool GetCientVisible()  Returns a value specifying whether a control is  displayed.  判断AspxGridView控件是否可见。
ASPxClientGridViewColumn GetColumn(index: int )   Returns the client column that resides at the specified position within the
column collection.  根据栏位序号取栏位对象。
ASPxClientGridViewColumn GetColumnByField(fieldName)    Returns the client column which is  bound to the specified data source field.    根据栏位名称取栏位对象。
ASPxClientGridViewColumn GetColumnById(id)  Returns the column with the specified unique identifier.    根据栏位id取栏位对象。
Int GetColumnIndex(colId: string )        根据栏位id取栏位序号.
ASPxClientGridViewColumn GetColumnObject(colId: string )      根据栏位id取栏位对象。
Int GetColumnsCount()   Returns the number of columns within the client ASPxGridView.   取栏位个数。
1. void  GetEditor( string  columnFieldNameOrId);
2. void  GetEditor(ASPxClientGridViewColumn column);
3. void  GetEditor( int  columnIndex);  Returns the editor used to edit the specified column's values.  取栏位编辑器。参数可以是栏位名称、栏位对象、栏位序号。
1. string  GetEditValue( int  columnIndex);
2. string  GetEditValue(ASPxClientGridViewColumn column);
3. string  GetEditValue( string  columnFieldNameOrId);  Returns the value of the specified edit cell.   取栏位编辑器值。参数可以是栏位名称、栏位对象、栏位序号。
Object GetDataRow(visibleIndex:index)       取数据行。返回一个元素。每行数据的html元素id命名规则:id=【ASPxGridViewID】_DXDataRow[rowIndex]可以通过如下方式访问栏位数据:
Var dataRow = grid.GetDataRow(0);
Var colValue1 = dataRow.all[0].innerHTML
GetEditFormTable()     
GetEditingErrorRow(obj)    
GetEditingRow(obj)     
GetEditor(column)      
GetEditorByColumnIndex(colIndex)       
GetEditorIndex(editorId)       
GetEditorPrefix()      
GetEditorValue(editor)     
GetEditorValues()      
GetEditValue(column)       
GetExpandedGroupRow(visibleIndex)      
GetFilterControl()     
GetFilterControlPopup()    
GetFilterRowMenu()     
GetFilterWindowContent()       
GetFixedColumnsDiv()       
GetFixedColumnsHelper()    
Int GetFocusedRowIndex()    Returns the focused row's index.    取焦点行行号。
GetFocusedRowInput()       
GetFuncCallBack(index)     
getGridByRow(rowEvt)       
GetGridTD()    
GetGroupRow(visibleIndex)      
GetHeadersRow()    
getHorzScrollableControl()     
GetHorzScrollDiv()     
GetHorzScrollDivs()    
getIsColumnCanDoOperation(colElement,op)       
getIsColumnCanGroup(colElement)    
getIsColumnCanSort(colElement)     
GetItemElementName(element)    
GetLinkElement(element)    
GetLoadingDiv()    
GetLoadingPanelContainer()     
GetLoadingPanelDiv()       
GetLoadingPanelElement()       
GetMainElement()       
GetMainTable()     
Void GetPageRowValues(fieldNames : String,
onCallback : ASPxClientGridViewValuesCallback)  Returns the row values displayed within the current page.   取当前页所有行指定栏位值。结果为 object 数组,在回调函数中处理返回结果。
GetParentRowsWindow()      
GetPopupEditForm()     
GetRootTable()     
GetRow(visibleIndex)       
getRowByHtmlEvent(evt)     
getRowIndex(rowId)     
GetRowKey(visibleIndex)    
Void GetRowValues(
visibleIndex : int ,
fieldNames : String,
onCallback : ASPxClientGridViewValuesCallback)  Returns the values of the specified data source fields within the specified row.    取指定行指定列值。在回调函数中处理返回结果。
getScrollableControl()     
getScrollableHelper()      
getScrollPosition(scrollableDiv, isTop)    
GetSelectedFieldValues(fieldNames : String,
onCallback : ASPxClientGridViewValuesCallback)  Returns the row values displayed within all selected rows.  取选中行栏位值。返回对象数组。在回调函数中处理返回结果。
Int GetSelectedRowCount()   Returns the number of selected rows.    取选中行数量。
GetSelectedState()     
GetSelectionInput()    
GetStyleTable()    
Int GetTopVisibleIndex()    Returns the index of the data row displayed at the ASPxGridView's top.  取当前页首行行号。
Void GetValuesOnCustomCallback(args : String,
onCallback : ASPxClientGridViewValuesCallback)  Sends a callback to the server and generates the server-side
ASPxGridView.CustomDataCallback event  passing it the specified
argument.   取自定义回调函数直接。结果在服务器端CustomDataCallback事件中返回。在回调函数中处理返回结果。
getVertScrollPosition()    
getVirtualPageIndex()      
getVirtualScrollMarginTop()    
Void GetVisibleRowsOnPage() Returns the number of rows displayed within the active page.    取当前页首行行号。
Void GotoPage(pageIndex: int )    Selects the specified page. 跳到指定页。
gridCallBack(arguments)    
gridFuncCallBack(arguments, onCallBack)    
1: void  GroupBy( int  columnIndex);
2: void  GroupBy(ASPxClientGridViewColumn column);
3: void  GroupBy( string  columnFieldNameOrId);
4: void  GroupBy( string  columnFieldNameOrId, int  groupIndex);
5: void  GroupBy( int  columnIndex, int  groupIndex);
6: void  GroupBy(ASPxClientGridViewColumn column, int  groupIndex);
7: void  GroupBy( int  columnIndex, int  groupIndex, string  sortOrder);
8: void  GroupBy(ASPxClientGridViewColumn column, int  groupIndex, string  sortOrder);
9: void  GroupBy( string  columnFieldNameOrId, int  groupIndex, string  sortOrder);   Groups data by  the values of the specified column.  按指定栏位分组。
HeaderColumnResizing(e)    
headerDoClick(drag)    
HeaderMouseDown(element, e)    
Void HideCustomizationWindow()  Closes the Customization Window.    关闭自定义Form。
HideFilterControlPopup()       
HideFilterPopup()      
HideLoadingDiv()       
HideLoadingPanel()     
HideLoadingPanelOnCallback()       
HideParentRows()       
HidePopupEditForm()    
Bool InCallback()   Returns a value that determines whether a callback request sent by  a web
control is  being currently processed on  the server side.    判断AspxGridView是否处于服务器回调过程中。
InitailizeFocus()      
Initialize()       
InitializeCallBackData()       
InlineInitialize()     
Bool IsCustomizationWindowVisible() Indicates whether the Customization Window is  displayed.    判断自定义Form是否可见。
Bool IsDataRow(visibleIndex: int )    Indicates whether the specified row is  a data row.  判断指定行是否数据行。
IsDisplayed()      
IsElementBelongsToGrid(elementId)      
IsGroupHeader(id)      
Bool IsGroupRow(visibleIndex: int )   Indicates whether the specified row is  a group  row. 判断指定行是否分组行。
Bool IsGroupRowExpanded(visibleIndex: int )   Indicates whether the specified group  row is  expanded.  判断指定分组行是否已展开。
IsRightToLeft()    
IsServerEventAssigned(eventName)       
IsTagertElementGroupPanel(targets)     
isVirtualScrollOutOfCurPage()      
IsVisible()    
mainTableClick(evt)    
mainTableClickCore(evt)    
mainTableDblClick(evt)     
mainTableDblClickCore(evt)     
MakeRowVisible(visibleIndex)       
Void MoveColumn(column, columnMoveTo, moveBefore, moveToGroup, moveFromGroup)   Hides the specified column. 隐藏或移动栏位。有15种语法。
Void NextPage() Activates the next page.    跳到下一页。
OnAfterCallback()      
OnBeforeCallback()     
OnBeforeCallbackOrPostBack()       
onCallBack(result)     
OnCallbackError(result, data)      
OnCallbackGeneralError(errorMessage)       
OnColumnFilterInputChanged(editor)     
OnColumnFilterInputKeyPress(editor, e)     
OnColumnFilterInputSpecKeyPress()      
OnColumnFilterInputSpecKeyPress(editor, e)     
OnControlClick(clickedElement, htmlEvent)      
onFilterItemOut(row)       
onFilterItemOver(row)      
OnFilterKeyPressTick()     
onFilterPopupCallback(values)      
OnFuncCallback(result)     
OnParentRowMouseEnter(element)     
OnParentRowMouseLeave(evt)     
OnVirtualScroll( event )     
Void PerformCallback(args: String)  Sends a callback to the server and generates the server-side ASPxGridView.CustomCallback event , passing it the specified argument.  触发AspxGridView服务器端CustomCallBack事件。常用来将客户端方法转换为服务器方法。
prepareCallbackArgs(serializedArgs, rootTD)    
Void PrevPage() Activates the previous page.    跳到上一页。
ProcessCallback(result)    
ProcessCallbackError(errorObj)     
ProcessCallbackGeneralError(errorMessage)      
RaiseBeginCallback(command)    
RaiseCallbackError(message)    
RaiseColumnGrouping(column)    
RaiseColumnMoving(targets)     
RaiseColumnResizing(column)    
RaiseColumnSorting(column)     
RaiseColumnStartDragging(column)       
RaiseContextMenu(objectType, index, htmlEvent)     
RaiseCustomizationWindowCloseUp()      
RaiseDetailRowCollapsing(visibleIndex)     
RaiseDetailRowExpanding(visibleIndex)      
RaiseEndCallback()     
RaiseFocusedRowChanged()       
RaiseInit()    
RaiseRowClick(visibleIndex, htmlEvent)     
RaiseRowCollapsing(visibleIndex)       
RaiseRowDblClick(visibleIndex, htmlEvent)      
RaiseRowExpanding(visibleIndex)    
RaiseSelectionChanged(visibleIndex, isSelected, isAllRecordsOnPage, isChangedOnServer)     
Refresh()      
RegisterServerEventAssigned(eventNames)    
RestoreActiveElementSettings()     
RestoreCallbackSettings()      
restoreScrollSettings()    
restoreVerticalScrollPosition()    
restoreVirtualScrollPosition()     
SaveActiveElementSettings(element)     
SaveCallbackSettings()     
saveScrollSettings()       
Void SelectAllRowsOnPage(selected: bool ) Selects all unselected rows displayed on  the current page.  选中或取消选中当前页中所有行。
SelectRow(visibleIndex, checked , fromCheckBox)     
SelectRowCore(visibleIndex, check)     
1. void  SelectRowOnPage( int  visibleIndex);
2. void  SelectRowOnPage( int  visibleIndex, bool
selected);  Selects or deselects the specified row displayed on  the current
page.   选中或取消选中当前页面上指定行。
1: void  SelectRows()
2: void  SelectRows( int  visibleIndex)
3: void  SelectRows(int32[] visibleIndces)
4: void  SelectRows( int  visibleIndex, bool  selected)
5: void  SelectRows(int32[] visibleIndces, bool  selected) Selects or deselects the specified row within the
ASPxGridView.   选中或取消选中指定行。可以不在当前页。如果参数中包含了行号(visibleIndex),必须指定KeyFieldName。
1. void  SelectRowsByKey( object  key);
2. void  SelectRowsByKey(Object[] keys);
3. void  SelectRowsByKey( object  key, bool
selected);
4. void  SelectRowsByKey(Object[] keys, bool
selected);  Selects or deselects the specified rows displayed within the
ASPxGridView.   根据主键值选中或取消选中行。可以提供多个主键值选中或取消选中多行。
SendPostBack( params )       
SetClientVisible(visible)      
setDragImagesPosition(el, left)    
SetEditValue(column, value)    
SetFilterEnabled(isFilterEnabled)      
SetFocusedRowIndex(visibleIndex)       
SetHeadersClientEvents()       
SetLoadingDivBounds(offsetElement, loadingDiv)     
SetLoadingPanelLocation(offsetElement, loadingPanel, x, y, offsetX, offsetY)       
setOnVirtualScroll()       
setScrollPosition(scrollableDiv, newScrolPos, isTop)       
SetVisible(visible)    
ShowCustomizationWindow(showAtElement)     
ShowError(errorText)       
ShowFilterControl()    
ShowFilterPopup(headerName, colIndex, htmlEvent)       
ShowParentRows(element)    
SortBy(column, sortOrder, reset, sortIndex)    
startColumnResizing(element, e)    
StartEditRow(visibleIndex)     
StartEditRowByKey(key)     
targetAdding(targets, element)     
targetChanged(targets)     
targetChanging(targets)    
targetImagesChangeVisibility(vis)      
UnGroup(column)    
UnselectAllRowsOnPage()    
UnselectRowOnPage(visibleIndex)    
UnselectRows(visibleIndices)       
UnselectRowsByKey(keys)    
UpdateEdit()       
UpdateHorzScrollDivs(onResize)     
UpdateVerticalScrollControls()     
updateVirtualMarginBottom()    
VirtualScroll()    
1.PerformCallback
其参数由程序员负责解释。可以某固定字符作为参数分隔符。
例:
//自定义回调事件
protected  void  ASPxGridView1_CustomCallback( object  sender, ASPxGridViewCustomCallbackEventArgs e)
{
     if (e.Parameters.Length > 0)
     {
         int  visibleIndex = 0;
         string [] parameterList = e.Parameters.Split( '|' ); //取参数列表
         if  (parameterList.Length > 0)
         {
             switch (parameterList[0].ToString().ToLower())
             {
                 case  "addnewrow" : //新增
                     this .ASPxGridView1.AddNewRow();
                     break ;
                 case  "startedit" : //修改
                     if  (parameterList.Length >= 2)
                     {
                         if  (Int32.TryParse(parameterList[1], out  visibleIndex))
                         {
                             this .ASPxGridView1.StartEdit(visibleIndex);
                         }
                     }
                     break ;
                 default :
                     break ;
             }
         }             
     }
}
前台代码示例:
Grid.PerformCallback( 'AddNewRow' )
Grid.PerformCallback( 'StartEdit|2' )
四十、 AspxGridView客户端非常用方法
方法名及语法  英文说明    中文说明
_constDXCanGroup()     
_constDXCustWindow()       
_constDXDataRow()      
_constDXDropSource()       
_constDXDropTarget()       
_constDXEmptyHeader()      
_constDXGroupRow()     
_constDXMainTable()    
Object _getStyleRow(index: int , rowStyle: int )        取行样式。Index:行号。rowStyle:样式类型,数据行为1,分组行为2。返回一个元素。
Bool _isTrueInCheckList(checkList, index)      
Void _setFocusedRowInputValue()     将焦点行编辑框的值设置为当前焦点行行号。焦点行编辑框是一个隐藏控件,命名为:[ASPxGridViewID]_DXFocusedRowInput
Bool _validate(list:List< object >)     对编辑器列表中的值进行校验
Function AdjustControl(checkSizeCorrectedFlag)      调整控件
Function AdjustControlCore()        调整核心控件
Function AfterInitialize()      处理化后处理
void  ApplyColumnAutoFilterCore(editor: object )       立即应用自动栏位过滤。在过滤行栏位中输入数据后调用本方法实现自动过滤。
object  GetArrowDragDownImage()      取拖动开始时箭头图像。返回一个IMG对象。
object  GetArrowDragUpImage()        取拖动放下时箭头图像。返回一个IMG对象。
object  GetArrowDragFieldImage()     取拖动经过栏位时箭头图像。返回一个IMG对象。
object  GetAutoFilterEditor(column)      取自动过滤栏位编辑器
Object GetAutoFilterEditorInputElement(editor)      取自动过滤栏位编辑器对应html元素
GetCallbackState()     
GetChild(idPostfix)    
GetChildElementById(childName)     
Object GetColResizedInput()     取栏位宽度调整辅助控件。栏位宽度调整辅助控件是一个隐藏控件,命名为:[ASPxGridViewID]_DXColResizedInput
GetCorrectCommand(arguments)       
Object GetCustomizationWindow()     取自定义编辑Form
Object GetCustomizationWindowElement()      取自定义编辑Form对应html元素
Object GetDataRowSelBtn(index: int )      取指定行选择框对象。返回一个元素。
         
四十一、    ASPxClientGridViewColumn(客户端栏位)常用属性
属性名 数据类型    英文说明    中文说明
fieldName   String  Gets the name of the database field assigned to the current column. 对应数据库中栏位名称。只读。
id  string   Obsolete. Gets the column's unique identifier.  栏位id。只读。
index   Int Gets the column's position within the collection.   栏位序号。只读。
name    String  Gets the column's name. 栏位名称。只读。
四十二、    嵌套AspxGridView的特殊控制
1.控制在同一时间只允许一行展开
设置主AspxGridView的SettingsDetail.AllowOnlyOneMasterRowExpanded属性( true 表示只允许一行展开, false 表示可允许多行展开)
例:
this .MasterGrid.SettingsDetail.AllowOnlyOneMasterRowExpanded= true ;
2.SettingsDetail属性设置
属性名 数据类型    英文说明    中文说明
AllowOnlyOneMasterRowExpanded   Bool    Gets or sets whether several master rows can be expanded
simultaneously. 是否在同一时间只能展开一行。可读写。
IsDetailGrid    Bool    Gets or sets whether the current ASPxGridView is  a detail grid. 是否明细AspxGridView。可读写。
ShowDetailButtons   Bool    Gets or sets whether detail buttons are displayed.  是否显示明细按钮。可读写。
ShowDetailRow   Bool    Gets or sets whether the ASPxGridView can display detail rows.  是否显示明细AspxGridView。可读写。只有该属性设置为 true 才能看到展开按钮。
3.嵌套AspxGridView树展开与折叠(客户端)
(1)使用ExpandAllDetailRows()展开所有行
语法:function ExpandAllDetailRows();
如果SettingsDetail.AllowOnlyOneMasterRowExpanded= true ,则只展开第一行,否则展开所有行。
(2)使用ExpandDetailRow()展开指定行
语法:function ExpandDetailRow(visibleIndex : int ); //可以不是当前页的行号
(3)使用CollapseAllDetailRows()折叠所有行
语法:function CollapseAllDetailRows();
(4)使用CollapseDetailRow()折叠指定行
语法:function CollapseDetailRow(visibleIndex : int ); //可以不是当前页的行号
 
四十三、    AspxGridView客户端源代码可借鉴点
1.将字符串转为数字(从后开始)
_getNumberFromEndOfString:function (st) {
         var  value=-1;
         var  n=st.length-1;
         while (parseInt(st.substr(n),10)>=0 && n>=0) {
             value=parseInt(st.substr(n),10);
             n--;
         } return  value;
     }
四十四、    AspxGridView服务器端源代码可借鉴点
四十五、    BUG
1.  在JS打开一个模态窗口之前如果GridViewMaster.Settings.ShowHorizontalScrollBar = true 则会使得AspxGridView出现一片灰色,关闭模态窗口后又显示正常。
四十六、    附录
1.格式化标识符
(1)数字格式化标识符
字母   含义
C或c Currency 货币格式
D或d Decimal 十进制格式(十进制整数,不要和.Net的Decimal数据类型混淆了)
E或e Exponent 指数格式
F或f Fixed point 固定精度格式
G或g General 常用格式
N或n 用逗号分割千位的数字,比如1234将会被变成1,234
P或p Percentage 百分符号格式
R或r Round-trip  圆整(只用于浮点数)保证一个数字被转化成字符串以后可以再被转回成同样的数字
X或x Hex 16进制格式
占位符
符号  名称  含义
0   0占位符    用0填充不足的位数
#   数字占位符   用#代替实际的位数
.   十进制小数点 
,   千位分隔符   用逗号进行千位分割,比如把1000分割成1,000
%   百分符号    显示一个百分标识
E+0
E-0
e+0
e-0 指数符号    用指数符号格式化输出
\   专一字符    用于传统格式的格式化序列,比如 "\n" (新行)
'ABC'
"ABC"    常量字符串   显示单引号或者双引号里面的字符串
;   区域分隔符   如果数字会被格式化成整数,负数,或者0,用;来进行分隔
,.  缩放符号    数字除以1000
 
(2)日期格式化标识符
D      
D   MM/dd/yyyy  ShortDatePattern(短日期模式)
D   dddd,MMMM dd,yyyy    LongDatePattern(长日期模式)
F   dddd,MMMM dd,yyyy HH:mm Full date and time ( long  date and short  time)(全日期和时间模式)
F   dddd,MMMM dd,yyyy HH:mm:ss  FullDateTimePattern ( long  date and long  time)(长日期和长时间)
G   MM/dd/yyyy HH:mm    General ( short  date and short  time)(通用模式,短日期和短时间)
G   MM/dd/yyyy HH:mm:ss General ( short  date and long  time)(通用模式,短日期和长时间)
M,M MMMM dd     MonthDayPattern(月天模式)
r,R ddd,dd MMM yyyy,HH ':' mm ':' ss 'GMT'   RFC1123Pattern (RFC1123模式)
S   yyyy-MM-dd HH:mm:ss     SortableDateTimePattern (conforms to ISO 8601) using  local time(使用本地时间的可排序模式)
T   HH:mm   ShortTimePattern (短时间模式)
T   HH:mm:ss    LongTimePattern(长时间模式)
U   yyyy-MM-dd HH:mm:ss UniversalSortable-DateTimePattern (conforms to ISO 8601) using  universal time(通用可排序模式)
U   dddd,MMMM dd,yyyy,HH:mm:ss  UniversalSortable-DateTimePattern(通用可排序模式)
y,Y MMMM,yyyy   YearMonthPattern(年月模式)
 
2.字符串转为枚举型
GridViewDetailExportMode exportMode = = (GridViewDetailExportMode)Enum.Parse( typeof (GridViewDetailExportMode), “Expanded”);

你可能感兴趣的:(AspxGridView使用手记)