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页面控件声明
<dxwgv:ASPxGridView ID=
"ASPxGridView1"
runat=
"server"
>
<Columns>
<dxwgv:GridViewDataColumn Caption=
"LogID"
FieldName=
"LogID"
/>
<dxwgv:GridViewDataColumn Caption=
"发生时间"
FieldName=
"OCCDatetime"
/>
<dxwgv:GridViewDataColumn Caption=
"事件"
FieldName=
"Event"
/>
<dxwgv:GridViewDataColumn Caption=
"类型"
FieldName=
"Type"
/>
<dxwgv:GridViewDataColumn Caption=
"创建人"
FieldName=
"Creator"
/>
<dxwgv:GridViewDataColumn Caption=
"创建日期"
FieldName=
"CreateDate"
/>
<dxwgv:GridViewDataColumn Caption=
"备注"
FieldName=
"Remark"
/>
</Columns>
</dxwgv:ASPxGridView>
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
<dxwgv:ASPxGridView ID=
"ASPxGridView1"
runat=
"server"
DataSourceID=
"SqlDataSource1"
>
<Columns>
<dxwgv:GridViewDataColumn Caption=
"LogID"
FieldName=
"LogID"
/>
<dxwgv:GridViewDataColumn Caption=
"发生时间"
FieldName=
"OCCDatetime"
/>
<dxwgv:GridViewDataColumn Caption=
"事件"
FieldName=
"Event"
/>
<dxwgv:GridViewDataColumn Caption=
"类型"
FieldName=
"Type"
/>
<dxwgv:GridViewDataColumn Caption=
"创建人"
FieldName=
"Creator"
/>
<dxwgv:GridViewDataColumn Caption=
"创建日期"
FieldName=
"CreateDate"
/>
<dxwgv:GridViewDataColumn Caption=
"备注"
FieldName=
"Remark"
/>
</Columns>
</dxwgv:ASPxGridView>
<asp:SqlDataSource
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"
>
</asp:SqlDataSource>
3.使用DataSourceID属性绑定ObjectDataSource
<dxwgv:ASPxGridView ID=
"ASPxGridView1"
runat=
"server"
DataSourceID=
"ObjectDataSource1"
>
<Columns>
<dxwgv:GridViewDataColumn Caption=
"LogID"
FieldName=
"LogID"
/>
<dxwgv:GridViewDataColumn Caption=
"发生时间"
FieldName=
"OCCDatetime"
/>
<dxwgv:GridViewDataColumn Caption=
"事件"
FieldName=
"Event"
/>
<dxwgv:GridViewDataColumn Caption=
"类型"
FieldName=
"Type"
/>
<dxwgv:GridViewDataColumn Caption=
"创建人"
FieldName=
"Creator"
/>
<dxwgv:GridViewDataColumn Caption=
"创建日期"
FieldName=
"CreateDate"
/>
<dxwgv:GridViewDataColumn Caption=
"备注"
FieldName=
"Remark"
/>
</Columns>
</dxwgv:ASPxGridView>
<asp:objectdatasource
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
<dxwgv:ASPxGridView ID=
"ASPxGridView1"
runat=
"server"
DataSourceID=
"LinqDataSource1"
>
<Columns>
<dxwgv:GridViewDataColumn Caption=
"LogID"
FieldName=
"LogID"
/>
<dxwgv:GridViewDataColumn Caption=
"发生时间"
FieldName=
"OCCDatetime"
/>
<dxwgv:GridViewDataColumn Caption=
"事件"
FieldName=
"Event"
/>
<dxwgv:GridViewDataColumn Caption=
"类型"
FieldName=
"Type"
/>
<dxwgv:GridViewDataColumn Caption=
"创建人"
FieldName=
"Creator"
/>
<dxwgv:GridViewDataColumn Caption=
"创建日期"
FieldName=
"CreateDate"
/>
<dxwgv:GridViewDataColumn Caption=
"备注"
FieldName=
"Remark"
/>
</Columns>
</dxwgv:ASPxGridView>
<asp:LinqDataSource ID=
"LinqDataSource1"
runat=
"server"
ContextTypeName=
"AspxGridView.SysLogDAL"
TableName=
"SysLogEntrys"
>
</asp:LinqDataSource>
其中AspxGridView.SysLogDAL有一个SysLogEntrys的属性,代码如下(其它代码同例3)
public
ICollection SysLogEntrys
{
get
{
return
this
.GetAllLog(); ;
}
}
5.使用DataSourceID属性绑定XmlDataSource
<dxwgv:ASPxGridView ID=
"ASPxGridView1"
runat=
"server"
DataSourceID=
"XmlDataSource1"
>
<Columns>
<dxwgv:GridViewDataColumn Caption=
"LogID"
FieldName=
"LogID"
/>
<dxwgv:GridViewDataColumn Caption=
"发生时间"
FieldName=
"OCCDatetime"
/>
<dxwgv:GridViewDataColumn Caption=
"事件"
FieldName=
"Event"
/>
<dxwgv:GridViewDataColumn Caption=
"类型"
FieldName=
"Type"
/>
<dxwgv:GridViewDataColumn Caption=
"创建人"
FieldName=
"Creator"
/>
<dxwgv:GridViewDataColumn Caption=
"创建日期"
FieldName=
"CreateDate"
/>
<dxwgv:GridViewDataColumn Caption=
"备注"
FieldName=
"Remark"
/>
</Columns>
</dxwgv:ASPxGridView>
<asp:XmlDataSource ID=
"XmlDataSource1"
runat=
"server"
DataFile=
"~/Sys_Log.xml"
></asp:XmlDataSource>
其中Sys_Log.xml文件内容如下
<?xml version=
'1.0'
encoding=
'gb2312'
?>
<data>
<row LogID=
"1"
OCCDatetime=
"2010-06-09 10:10:11.083"
Event=
"用户【杨东】登陆系统"
Type=
"登陆信息"
Creator=
"sa"
CreateDate=
"2010-10-21 11:23:08.090"
Remark=
""
/>
</data>
三、 绑定数据(嵌套树)
1.主从数据绑定
AspxGridView允许嵌套。
可以通过设置主AspxGridView的ShowDetailRow=
true
来开启嵌套。<SettingsDetail ShowDetailRow=
"true"
/>。
子AspxGridView定义在父AspxGridView的<Templates><DetailRow>标签中。
例:Asp.Net代码
<dxwgv:ASPxGridView ID=
"MasterGrid"
runat=
"server"
KeyFieldName=
"TaskCode"
ClientInstanceName=
"mastergrid"
DataSourceID=
"SqlDataSource1"
>
<SettingsBehavior AllowMultiSelection=
"true"
/>
<Columns>
<dxwgv:GridViewDataColumn Caption=
"任务编号"
FieldName=
"TaskCode"
/>
<dxwgv:GridViewDataColumn Caption=
"任务名称"
FieldName=
"TaskName"
/>
<dxwgv:GridViewDataColumn Caption=
"任务类型"
FieldName=
"TaskType"
/>
<dxwgv:GridViewDataColumn Caption=
"计划工时"
FieldName=
"PlanHours"
/>
<dxwgv:GridViewDataColumn Caption=
"计划开始时间"
FieldName=
"PlanBeginDate"
/>
<dxwgv:GridViewDataColumn Caption=
"计划结束时间"
FieldName=
"PlanEndDate"
/>
<dxwgv:GridViewDataColumn Caption=
"备注"
FieldName=
"Remark"
/>
<dxwgv:GridViewCommandColumn Caption=
"操作"
Visible=
"true"
>
<UpdateButton Text=
"保存"
Visible=
"true"
/>
<NewButton Text=
"新增"
Visible=
"true"
/>
<CancelButton Text=
"取消"
Visible=
"true"
/>
<ClearFilterButton Text=
"清除"
Visible=
"true"
/>
<SelectButton Text=
"选择"
Visible=
"true"
/>
</dxwgv:GridViewCommandColumn>
</Columns>
<SettingsDetail ShowDetailRow=
"true"
/>
<Templates>
<DetailRow>
<dxwgv:ASPxGridView ID=
"DetailGrid"
runat=
"server"
KeyFieldName=
"ID"
ClientInstanceName=
"detailgrid"
DataSourceID=
"SqlDataSource2"
OnBeforePerformDataSelect=
"DetailGrid_BeforePerformDataSelect"
>
<Columns>
<dxwgv:GridViewDataColumn Caption=
"ID"
FieldName=
"ID"
/>
<dxwgv:GridViewDataColumn Caption=
"任务编号"
FieldName=
"TaskCode"
Visible=
"false"
/>
<dxwgv:GridViewDataColumn Caption=
"子任务名称"
FieldName=
"ChildTaskName"
/>
<dxwgv:GridViewDataColumn Caption=
"执行人"
FieldName=
"ExecuteUser"
/>
<dxwgv:GridViewDataColumn Caption=
"计划工时"
FieldName=
"PlanHours"
/>
<dxwgv:GridViewDataColumn Caption=
"计划开始时间"
FieldName=
"PlanBeginDate"
/>
<dxwgv:GridViewDataColumn Caption=
"计划结束时间"
FieldName=
"PlanEndDate"
/>
</Columns>
<SettingsDetail IsDetailGrid=
"true"
/>
</dxwgv:ASPxGridView>
</DetailRow>
</Templates>
</dxwgv:ASPxGridView>
<asp:ObjectDataSource ID=
"ObjectDataSource_Type"
runat=
"server"
SelectMethod=
"GetUsers"
TypeName=
"AspxGridView.SysUser"
>
</asp:ObjectDataSource>
<asp:SqlDataSource
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"
>
</asp:SqlDataSource>
<asp:SqlDataSource
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"
>
<SelectParameters>
<asp:SessionParameter Name=
"TaskCode"
SessionField=
"TaskCode"
/>
</SelectParameters>
</asp:SqlDataSource>
C#代码:
//子AspxGridView数据绑定
protected
void
DetailGrid_BeforePerformDataSelect(
object
sender, EventArgs e)
{
Session[
"TaskCode"
] = (sender
as
ASPxGridView).GetMasterRowKeyValue();
}
四、 客户端行维护(新增、修改、删除等)
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();
}
新增行后保存数据方法示例
可以直接点内置的【保存】按钮保存数据。
<dxwgv:ASPxGridView ID=
"ASPxGridView1"
runat=
"server"
KeyFieldName=
"LogID"
DataSourceID=
"SqlDataSource1"
>
<Columns>
<dxwgv:GridViewDataColumn Caption=
"LogID"
FieldName=
"LogID"
ReadOnly=
"false"
/>
<dxwgv:GridViewDataColumn Caption=
"发生时间"
FieldName=
"OCCDatetime"
ReadOnly=
"false"
/>
<dxwgv:GridViewDataColumn Caption=
"事件"
FieldName=
"Event"
/>
<dxwgv:GridViewDataColumn Caption=
"类型"
FieldName=
"Type"
/>
<dxwgv:GridViewDataColumn Caption=
"创建人"
FieldName=
"Creator"
/>
<dxwgv:GridViewDataColumn Caption=
"创建日期"
FieldName=
"CreateDate"
/>
<dxwgv:GridViewDataColumn Caption=
"备注"
FieldName=
"Remark"
/>
<dxwgv:GridViewCommandColumn Caption=
"操作"
Visible=
"true"
>
<UpdateButton Text=
"保存"
Visible=
"true"
/>
<NewButton Text=
"新增"
Visible=
"true"
/>
</dxwgv:GridViewCommandColumn>
</Columns>
</dxwgv:ASPxGridView>
<asp:SqlDataSource
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)"
>
<InsertParameters>
<asp:Parameter Name=
"OCCDatetime"
Type=
"DateTime"
/>
<asp:Parameter Name=
"Event"
Type=
"String"
/>
<asp:Parameter Name=
"Type"
Type=
"String"
/>
<asp:Parameter Name=
"Creator"
Type=
"String"
/>
<asp:Parameter Name=
"CreateDate"
Type=
"DateTime"
/>
<asp:Parameter Name=
"Remark"
Type=
"String"
/>
</InsertParameters>
</asp:SqlDataSource>
也可以调用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<GridViewDataColumn> GetSortedColumns()
例:
System.Collections.ObjectModel.ReadOnlyCollection<GridViewDataColumn> 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}中间会自动显示括号。只有在<GroupSummary>标签中定义了汇总方式才会在显示其汇总文本。
例:
<GroupSummary>
<dxwgv:ASPxSummaryItem FieldName=
"OCCDatetime"
SummaryType=
"Count"
/>
</GroupSummary>
(2) Setting. ShowGroupedColumns用来显示已分组的栏位。默认为
true
。
(3) Setting. ShowGroupedButtons用来显示分组展开按钮(+)。默认为
true
。
(4) Setting. ShowGroupFooter用来设置分组页脚显示模式(GridViewGroupFooterMode枚举型)。默认为Hidden。可取值:Hidden、VisibleAlways、VisibleIfExpanded。
(5)分组数据间隔。GroupInterval属性。
例:<Settings 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.用户拖动栏位到分组带实现分组
首先需要显示分组带:<Settings ShowGroupPanel=
"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页面控件声明:
<dxwgve:ASPxGridViewExporter ID=
"ASPxGridViewExporter1"
runat=
"server"
>
</dxwgve:ASPxGridViewExporter>
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)栏位声明示例
<dxwgv:GridViewCommandColumn Caption=
"选择"
Name=
"IsSelect"
ButtonType=
"Button"
ShowSelectCheckbox=
"true"
>
</dxwgv:GridViewCommandColumn>
<dxwgv:GridViewCommandColumn Caption=
"操作"
Visible=
"true"
>
<UpdateButton Text=
"保存"
Visible=
"true"
/>
<NewButton Text=
"新增"
Visible=
"true"
/>
<CancelButton Text=
"取消"
Visible=
"true"
/>
<ClearFilterButton Text=
"清除"
Visible=
"true"
/>
<SelectButton Text=
"选择"
Visible=
"true"
/>
</dxwgv:GridViewCommandColumn>
(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)栏位声明示例
<dxwgv:GridViewDataColumn Caption=
"LogID"
FieldName=
"LogID"
ReadOnly=
"true"
>
</dxwgv:GridViewDataColumn>
(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) 栏位声明示例
<dxwgv:GridViewDataButtonEditColumn Caption=
"备注"
FieldName=
"Remark"
>
<PropertiesButtonEdit NullText=
"空"
/>
</dxwgv:GridViewDataButtonEditColumn>
(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
。直接显示在栏位下方。
可以将汇总信息定义在<TotalSummary>标签中。
例:
<TotalSummary>
<dxwgv:ASPxSummaryItem FieldName=
"Event"
SummaryType=
"Count"
/>
<dxwgv:ASPxSummaryItem FieldName=
"OCCDatetime"
SummaryType=
"Min"
/>
<dxwgv:ASPxSummaryItem FieldName=
"OCCDatetime"
SummaryType=
"Max"
/>
</TotalSummary>
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<GridViewColumn,
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<GridViewColumn,
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
的情况下声明,否则无法触发。
自定义按钮可以在<dxwgv:GridViewCommandColumn>标签中定义。
例:
<dxwgv:GridViewCommandColumn Caption=
"操作"
Visible=
"true"
>
<CustomButtons>
<dxwgv:GridViewCommandColumnCustomButton ID=
"btnSelect"
Text=
"自定义选择"
Visibility=
"AllDataRows"
/>
</CustomButtons>
</dxwgv:GridViewCommandColumn>
通常在该事件中捕获按钮名称调用对应方法作出实际的回应。
例:
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使用<Styles>标签用于设置样式。
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<Object> _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
) 将所有行中的选择列置为选中状态或取消选择状态。不影响行的选中状态,在翻页时会丢弃。选择列可以使用以下方式定义:
<dxwgv:GridViewCommandColumn Caption=
"选择"
Name=
"IsSelect"
ButtonType=
"Button"
ShowSelectCheckbox=
"true"
> </dxwgv:GridViewCommandColumn>
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) 取数据行。返回一个<tr>元素。每行数据的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。返回一个<tr>元素。
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
) 取指定行选择框对象。返回一个<input type=checkbox>元素。
四十一、 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”);