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”);