一、ASPxGridView属性:概述设置(Settings)
1.1、Settings 
<Settings
GridLines="Vertical" : 网格样式 Vertical, Both, None
ShowGroupPanel="True" : 分组面板
ShowFooter="True" : 脚注面板
ShowFilterRow="True" : 过滤器行
ShowHeaderFilterButton="true" : 表头过滤按钮
ShowFilterBar :允许显示过滤工具条
ShowGroupFooter="VisibleAlways" : 分组脚注面板 Hidden | VisibleIfExpand | VisibleAlways
ShowPreview="true" : 预览面板
ShowVerticalScrollBar="True" : 垂直滚动条
VerticalScrollableHeight="250" : 垂直滚动条
/>
1.2、行为设置(SettingsBehavior)
<SettingsBehavior
AllowDragDrop="False" : 允许托拽
ColumnResizeMode="Control" : 列宽度调整模式
AllowFocusedRow="True" : 鼠标点击选择行
AllowSort :允许排序
AllowGroup :允许分组
autoExpandAllGroups :自动展开所有组
ConfirmDelete :允许提交删除
AllowMultiSelection :允许选择多行
/>
1.3、分页(SettingsPager)
<SettingsPager
PageSize="30" : 分页大小
Mode="ShowAllRecords" : 展示模式
SEOFriendly="Enabled" : Search engine friendly
Position="TopAndBottom" : 分页控件位置
>
<Summary AllPagesText="页: {0} / {1} ({2}行)" />
</SettingsPager>
1.4、文本设置(SettingsText)
<SettingsText
Title="标题"
EmptyDataRow="无数据"
PopupEditFormCaption="编辑"
ConfirmDelete="确定删除?"
/>
1.5、Loading 面板设置(SettingsLoadingPanel)
<SettingsLoadingPanel Mode="ShowOnStatusBar" />
1.6、编辑视图设置(SettingsEditing)
<SettingsEditing
PopupEditFormWidth = "600px"
NewItemRowPosition = "Bottom"
Mode = "PopupEditForm"
/>
1.7、编辑模式 SettingsEditing.Mode
EditForm : 当前行转化为表单,嵌入在行中
EditFormAndDisplayRow : 同EditForm,但保留当前行
Inline : 在当前行现场编辑
PopupEditForm : 弹出窗口编辑 1.8、行详细设置(SettingDetail)
<SettingDetail
AllowOnlyOneMasterRowExpanded :允许只展开一列详细信息
ShowDetailRow :允许显示详细列表
IsDetailGrid :允许显示分组
>
1.9 动态选中某一行:
AspxgridView1.Selection.SetSelection(i.true)
遍历所有行:
声明变量:DataRowView dv
For(int i=0;i< AspxgridView1.VisbleRowCount;i++)
{
  选中行提取数据:
  if(AspxgridView1.Selection.IsRowSelected(i))
  {
    行数据集
    dv=(DataRowView)AspxgridView1.GetRow(i);
  }
}

二、ASPxGridView样式 & 格式

集中式样式
<Styles>
<Header HorizontalAlign="Center" /> : 标题居中对齐
<AlternatingRow Enabled="true"/> : 交错行效果
<CommandColumn Paddings-Padding="1" /> :
</Styles>
列样式
<dxwgv:GridViewDataTextColumn FieldName="Total" UnboundType="Decimal">
<FooterCellStyle ForeColor="Brown"/>
</dxwgv:GridViewDataTextColumn>
数字日期格式
金额
<dxwgv:GridViewDataTextColumn FieldName="UnitPrice" >
<PropertiesTextEdit DisplayFormatString="c" />
</dxwgv:GridViewDataTextColumn>
时间
<dxwgv:GridViewDataDateColumn Caption="Time" FieldName="Time">
<PropertiesDateEdit DisplayFormatString="HH:mm:ss" />
<CellStyle HorizontalAlign="Right" />
</dxwgv:GridViewDataDateColumn>
图像
<Images ImageFolder="~/App_Themes/Glass/{0}/">
<CollapsedButton Height="12px" Width="11px" />
<DetailCollapsedButton Height="9px" Width="9px" />
<PopupEditFormWindowClose Height="17px" Width="17px" />
</Images>

三、ASPxGridView分组 & 汇总 & 排序

间隔分组:将时间日期字段按个性分组,如年、月、日、周、季度、上周、下周.....
<dxwgv:GridViewDataDateColumn FieldName="OrderDate" VisibleIndex="3" GroupIndex="0">
<Settings GroupInterval="DateYear"/>
</dxwgv:GridViewDataDateColumn> 汇总
<TotalSummary>
<dxwgv:ASPxSummaryItem FieldName="CompanyName" SummaryType="Count"/>
<dxwgv:ASPxSummaryItem FieldName="Total" SummaryType="Sum" DisplayFormat="c"/>
<dxwgv:ASPxSummaryItem FieldName="Quantity" SummaryType="Min" />
<dxwgv:ASPxSummaryItem FieldName="Quantity" SummaryType="Average" />
<dxwgv:ASPxSummaryItem FieldName="Quantity" SummaryType="Max" />
</TotalSummary>
分组汇总
<GroupSummary>
<dxwgv:ASPxSummaryItem FieldName="Country" SummaryType="Count" />
<dxwgv:ASPxSummaryItem FieldName="Quantity" SummaryType="Sum" />
<dxwgv:ASPxSummaryItem FieldName="Total" SummaryType="Sum" DisplayFormat="{0:c}"/>
</GroupSummary>
ASPxGridView 列:
---------------------------------------------------------
基本列(GridViewDataColumn)
<dxwgv:GridViewDataColumn FieldName="Country" VisibleIndex="5" /> 其他列
<dx:GridViewDataTextColumn /> : 文本列
<dx:GridViewDataMemoColumn /> : 长文本列
<dx:GridViewDataImageColumn /> : 图像列
<dx:GridViewDataBinaryImageColumn /> : 二进制图像列
<dx:GridViewDataDateColumn /> : 日期列
<dx:GridViewDataTimeEditColumn /> : 时间列
<dx:GridViewDataComboBoxColumn /> : 组合框列
<dx:GridViewDataDropDownEditColumn /> : 下拉框编辑列?
<dx:GridViewCommandColumn /> : 命令按钮列
<dx:GridViewDataButtonEditColumn /> : 编辑按钮列?
<dx:GridViewDataCheckColumn /> : 复选框列
<dx:GridViewDataColorEditColumn /> : 色彩列
<dx:GridViewDataHyperLinkColumn /> : 超链接列
<dx:GridViewDataProgressBarColumn /> : 进度条列
<dx:GridViewDataSpinEditColumn /> : SpinEdit列 长文本列(GridViewDataMemoColumn)
编辑时展现为多行文本框
<dx:GridViewDataMemoColumn FieldName="Remarks" Caption="备注"
EditCellStyle-BackColor="Yellow" // 行的背景颜色
PropertiesMemoEdit-Rows="4" // 添加或是修改时跨行
EditFormSettings-ColumnSpan="2" //添加或是修改时跨列
/>
超链接列(GridViewDataHyperLinkColumn)
<dx:GridViewDataHyperLinkColumn FieldName="ArticleId" Caption="查看" >
<PropertiesHyperLinkEdit Text="查看" TextFormatString="" />
</dx:GridViewDataHyperLinkColumn> 组合框列(GridViewDataComboBoxColumn)
<dx:ASPxGridView OnCellEditorInitialize="grid_CellEditorInitialize">
<dxwgv:GridViewDataComboBoxColumn FieldName="City" VisibleIndex="2">
<PropertiesComboBox EnableSynchronization="False" EnableIncrementalFiltering="True" DropDownStyle="DropDown" />
</dxwgv:GridViewDataComboBoxColumn>
</dx:ASPxGridView>
protected void grid_CellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e)
{
// 用下拉框展示国家下的所有城市绑定数据源
if(grid.IsEditing && e.Column.FieldName != "City" && !grid.IsNewRowEditing)
{
ASPxComboBox combo = e.Editor as ASPxComboBox;
string country = (string)grid.GetRowValuesByKeyValue(e.KeyValue, "Country");
FillCityCombo(combo, country);
}
}
命令按钮列(GridViewCommandColumn)
<dx:ASPxGridView runat="server" KeyFieldName="ID"
OnRowDeleting="gv_RowDeleting" OnRowUpdating="gv_RowUpdating" OnRowInserting="gv_RowInserting"
<Columns>
一种是添加图片的 <dx:GridViewCommandColumn VisibleIndex="0" ButtonType="Image" Caption=操作">
<EditButton Visible="True">
<Image ToolTip="修改" Url="Images/edit.png" />
</EditButton>
<NewButton Visible="True">
<Image ToolTip="新建" Url="Images/new.png" />
</NewButton>
<DeleteButton Visible="true">
<Image ToolTip="删除" Url="Images/del.png" />
</DeleteButton>
<CancelButton Visible="True">
<Image ToolTip="关闭" Url="Images/cancel.png" />
</CancelButton>
<UpdateButton Visible="True">
<Image ToolTip="保存" Url="Images/update.png" />
</UpdateButton>
<ClearFilterButton Visible="true">
<Image ToolTip="清空" Url="Images/del2.png" />
</ClearFilterButton>
<HeaderStyle HorizontalAlign="Center" />
</dx:GridViewCommandColumn>
一种就只这种标准的: <dxwgv:GridViewCommandColumn>
<EditButton Visible="True" Text="修改" />
<DeleteButton Visible="true" Text="删除" />
<NewButton Visible="True" Text="新建" />
<CancelButton Visible="true" Text="取消" />
<UpdateButton Visible="true" Text="保存" />
<ClearFilterButton Visible="true" Text="取消过滤" />
</dxwgv:GridViewCommandColumn>
</Columns>
</dx:ASPxGridView>
代码详见《ASPxGridView.DataBind》
复选框列
<dxwgv:GridViewCommandColumn ShowSelectCheckbox="True"/>
<dxwgv:GridViewCommandColumn ShowSelectCheckbox="True">
<HeaderTemplate>
<input type="checkbox" onclick="grid.SelectAllRowsOnPage(this.checked);" title="选择/放弃选择本页的所有行" />
</HeaderTemplate>
<HeaderStyle HorizontalAlign="Center" />
</dxwgv:GridViewCommandColumn>
自定义按钮
“删除”按钮
<dx:GridViewCommandColumn Caption="删除">
<CustomButtons>
<dx:GridViewCommandColumnCustomButton ID="DeleteFile" Text="删除" />
</CustomButtons>
</dx:GridViewCommandColumn>
protected void gv_CustomButtonCallback(object sender, ASPxGridViewCustomButtonCallbackEventArgs e)
{
if (e.ButtonID == "DeleteFile")
{
long fileId = Convert.ToInt64(gv.GetRowValues(e.VisibleIndex, "FileId"));
string fileName = gv.GetRowValues(e.VisibleIndex, "FileName").ToString();
string filePath = Common.Config.Path.PhysicalUploadFolder + gv.GetRowValues(e.VisibleIndex, "FilePath").ToString();
System.IO.File.Delete(filePath);
using (DbFile db = new DbFile())
db.DelFile(fileId);
ShowData(this.FileBatchId);
}
}
“复制行”按钮
<dx:ASPxGridView runat="server" OnCustomButtonCallback="grid_CustomButtonCallback">
<Columns>
<dxwgv:GridViewCommandColumn VisibleIndex="0">
<CustomButtons>
<dxwgv:GridViewCommandColumnCustomButton Text="复制行" ID="Copy" />
</CustomButtons>
</dxwgv:GridViewCommandColumn>
</Columns>
</dx:ASPxGridView>
Hashtable copiedValues;
protected void grid_CustomButtonCallback(object sender, ASPxGridViewCustomButtonCallbackEventArgs e)
{
if(e.ButtonID == "Copy")
{
copiedValues = new Hashtable();
foreach(string fieldName in copiedFields)
copiedValues[fieldName] = grid.GetRowValues(e.VisibleIndex, fieldName);
grid.AddNewRow();
}
}
protected void grid_InitNewRow(object sender, DevExpress.Web.Data.ASPxDataInitNewRowEventArgs e)
{
if(copiedValues != null)
foreach(string fieldName in copiedFields)
e.NewValues[fieldName] = copiedValues[fieldName];
}
非绑定列(GridViewDataTextColumn)
<dxwgv:GridViewDataTextColumn FieldName="Total" UnboundType="Decimal" />
protected void grid_CustomUnboundColumnData(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewColumnDataEventArgs e)
{
// Total = UnitPrice * Quantity
if(e.Column.FieldName == "Total")
{
decimal price = (decimal)e.GetListSourceFieldValue("UnitPrice");
int quantity = Convert.ToInt32(e.GetListSourceFieldValue("Quantity"));
e.Value = price * quantity;
}
}
模板列(GridViewDataTextColumn)
onhtmlrowcreated="grid_HtmlRowCreated"
<dxwgv:GridViewDataTextColumn Name="Percent" Caption="Change" FieldName="Change">
<DataItemTemplate>
<asp:Image ID="changeImage" runat="server" ImageUrl="~/Images/arGreen.gif" Visible="false" GenerateEmptyAlternateText="True" />
<asp:Label ID="changePercent" runat="server" Text="" />
<a href="JavaScript:void(0);" onclick="OnMoreInfoClick(this, '<%# Container.KeyValue %>')">更多...</a>
<a href="../pages/download.ashx?path=../uploads/<%#Eval("FilePath")%>&name=<%#Eval("FileName") %> " >下载</a>
</DataItemTemplate>
</dxwgv:GridViewDataTextColumn>
protected void grid_HtmlRowCreated(object sender, ASPxGridViewTableRowEventArgs e)
{
if (!grid.IsEditing && e.RowType == DevExpress.Web.ASPxGridView.GridViewRowType.Data)
{
// 操作 Label 控件
Label label = grid.FindRowCellTemplateControl(e.VisibleIndex, null, "changePercent") as Label;
decimal change = (decimal)grid.GetRowValues(e.VisibleIndex, "Change");
label.Text = string.Format("{0:p}", change);
// 操作 Image 控件
System.Web.UI.WebControls.Image img = (System.Web.UI.WebControls.Image)grid.FindRowCellTemplateControl(e.VisibleIndex, null, "changeImage");
img.Visible = false;
if(change != 0)
{
img.Visible = true;
img.ImageUrl = change < 0 ? "~/Images/arRed.gif" : "~/Images/arGreen.gif";
label.ForeColor = change < 0 ? Color.Red : Color.Green;
}
}
}
注:模板列中的事件如何写?手工写事件,如btn.OnClick += ...;
注:视图模板请参考文档《ASPxGridView.Templates》
ASPxGridView 事件
RowCreated(创建行数据时触发,类似 GridView 的 DataItemCreate 事件)
protected void grid_HtmlRowCreated(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewTableRowEventArgs e)
{
if(e.RowType != DevExpress.Web.ASPxGridView.GridViewRowType.Data) return;
// 设置模板列lable控件值
Label label = grid.FindRowCellTemplateControl(e.VisibleIndex, null, "changePercent") as Label;
decimal change = (decimal)grid.GetRowValues(e.VisibleIndex, "Change");
label.Text = string.Format("{0:p}", change);
// 设置模板列image控件的图像
System.Web.UI.WebControls.Image img = (System.Web.UI.WebControls.Image)grid.FindRowCellTemplateControl(e.VisibleIndex, null, "changeImage");
img.Visible = false;
if(change != 0) {
img.Visible = true;
img.ImageUrl = change < 0 ? "~/Images/arRed.gif" : "~/Images/arGreen.gif";
label.ForeColor = change < 0 ? Color.Red : Color.Green;
}
}
HtmlRowPrepared(行准备?可在此设置行的展示效果,如背景)
protected void grid_HtmlRowPrepared(object sender, ASPxGridViewTableRowEventArgs e)
{
bool hasError = e.GetValue("FirstName").ToString().Length <= 1;
hasError = hasError || e.GetValue("LastName").ToString().Length <= 1;
hasError = hasError || !e.GetValue("Email").ToString().Contains("@");
hasError = hasError || (int)e.GetValue("Age") < 18;
DateTime arrival = (DateTime)e.GetValue("ArrivalDate");
hasError = hasError || DateTime.Today.Year != arrival.Year || DateTime.Today.Month != arrival.Month;
if(hasError) {
e.Row.ForeColor = System.Drawing.Color.Red;
}
}
UnboundColumnData (非绑定列数据填充)
protected void grid_CustomUnboundColumnData(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewColumnDataEventArgs e)
{
if(e.Column.FieldName == "Total")
{
decimal price = (decimal)e.GetListSourceFieldValue("UnitPrice");
int quantity = Convert.ToInt32(e.GetListSourceFieldValue("Quantity"));
e.Value = price * quantity;
}
}
CustomColumnDisplayText(定制列文本展示)
protected void grid_CustomColumnDisplayText(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewColumnDisplayTextEventArgs e)
{
if(object.Equals(e.Column, grid.Columns["Size"]))
e.DisplayText = GetSizeDisplayText(e.Value);
}
SummaryDisplayText(合计行文本展示)
protected void grid_SummaryDisplayText(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewSummaryDisplayTextEventArgs e) {
if(e.Item.FieldName == "Size") {
e.Text = GetSizeDisplayText(e.Value);
}
}
HeaderFilterFillItems(自定义过滤器处理逻辑)
protected void grid_HeaderFilterFillItems(object sender, ASPxGridViewHeaderFilterEventArgs e)
{
if(object.Equals(e.Column, grid.Columns["Total"])) {
PrepareTotalFilterItems(e);
return;
}
if(object.Equals(e.Column, grid.Columns["Quantity"])) {
PrepareQuantityFilterItems(e);
return;
}
}
---------------------------------------------------------
回调处理
---------------------------------------------------------
CustomCallback(Ajax 回调处理)
<select id="selGridLayout" onchange="grid.PerformCallback(this.value);" >
<option selected="selected" value="0">Country</option>
<option value="1">Country, City</option>
<option value="2">Company Name</option>
</select>
protected void grid_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e)
{
int layoutIndex = -1;
if(int.TryParse(e.Parameters, out layoutIndex))
ApplyLayout(layoutIndex); // 更换布局
}
CustomButtonCallback(定制按钮的ajax回调处理)
protected void grid_CustomButtonCallback(object sender, ASPxGridViewCustomButtonCallbackEventArgs e)
{
if(e.ButtonID != "Copy") return;
copiedValues = new Hashtable();
foreach(string fieldName in copiedFields)
copiedValues[fieldName] = grid.GetRowValues(e.VisibleIndex, fieldName); grid.AddNewRow();
}
---------------------------------------------------------
编辑视图
---------------------------------------------------------
InitNewRow(新建行的数据初始化处理)
protected void grid_InitNewRow(object sender, DevExpress.Web.Data.ASPxDataInitNewRowEventArgs e)
{
if(copiedValues == null) return;
foreach(string fieldName in copiedFields) {
e.NewValues[fieldName] = copiedValues[fieldName];
}
}
CellEditorInitialize(编辑器初始化)
protected void grid_CellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e)
{
if(grid.IsEditing && !grid.IsNewRowEditing && e.Column.FieldName == "City")
{
string country = (string)grid.GetRowValuesByKeyValue(e.KeyValue, "Country");
ASPxComboBox combo = e.Editor as ASPxComboBox;
FillCityCombo(combo, country);
combo.Callback += new CallbackEventHandlerBase(cmbCity_OnCallback);
}
}
StartRowEditing(开始编辑)
protected void grid_StartRowEditing(object sender, DevExpress.Web.Data.ASPxStartRowEditingEventArgs e)
{
if(!grid.IsNewRowEditing) {
grid.DoRowValidation();
}
}
RowValidating (行数据验证)
protected void grid_RowValidating(object sender, DevExpress.Web.Data.ASPxDataValidationEventArgs e)
{
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 can't be null.";
}
}
if(e.Errors.Count > 0) e.RowError = "Please, fill all fields.";
if(e.NewValues["FirstName"] != null && e.NewValues["FirstName"].ToString().Length <) {
AddError(e.Errors, grid.Columns["FirstName"], "First Name must be at least two characters long.");
}
if(e.NewValues["LastName"] != null && e.NewValues["LastName"].ToString().Length < 2) {
AddError(e.Errors, grid.Columns["LastName"], "Last Name must be at least two characters long.");
}
if(e.NewValues["Email"] != null && !e.NewValues["Email"].ToString().Contains("@")) {
AddError(e.Errors, grid.Columns["Email"], "Invalid e-mail.");
} int age = 0;
int.TryParse(e.NewValues["Age"] == null ? string.Empty : e.NewValues["Age"].ToString(), out age);
if(age < 18) {
AddError(e.Errors, grid.Columns["Age"], "Age must be greater than or equal 18.");
}
DateTime arrival = DateTime.MinValue;
DateTime.TryParse(e.NewValues["ArrivalDate"] == null ? string.Empty : e.NewValues["ArrivalDate"].ToString(), out arrival);
if(DateTime.Today.Year != arrival.Year || DateTime.Today.Month != arrival.Month) {
AddError(e.Errors, grid.Columns["ArrivalDate"], "Arrival date is required and must belong to the current month.");
}
if(string.IsNullOrEmpty(e.RowError) && e.Errors.Count > 0) e.RowError = "Please, correct all errors.";
if (e.NewValues["Name"] == null)
{
e.RowError = "功能名称不能为空,请填写功能名称";
return;
}
if (e.NewValues["Remarks"] == null)
{
e.RowError = "功能备注不能为空,请填写功能备注";
return;
}
}
行修改事件 RowUpdating
protected void gvFunction_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
functionModel.Name = e.NewValues[0].ToString();// 组名称
functionModel.Remarks = e.NewValues[1].ToString(); // 组备注
functionModel.FunctionId = e.Keys[0].ToString();// ID
rmodel = client.FunctionEdit(functionModel);// 返回类型表
gvFunction.CancelEdit();//结束编辑状态
e.Cancel = true;
FunctionDataBind();//更新数据
}
行添加事件RowInserting
protected void gvFunction_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{ functionModel.Name = e.NewValues[0].ToString();// 组名称
functionModel.Remarks = e.NewValues[1].ToString(); // 组备注
rmodel = client.FunctionSubmit(functionModel);// 返回类型表
gvFunction.CancelEdit();//结束编辑状态
e.Cancel = true;
FunctionDataBind();//更新数据
} 行删除事件RowDeleting
protected void gvFunction_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
functionModel.FunctionId = e.Keys[0].ToString();// ID
client.FunctionInfoDelete(functionModel);
gvFunction.CancelEdit();//结束编辑状态
e.Cancel = true;
FunctionDataBind();//更新数据
}
初始化回调事件 Callback
protected void callbackPanel_Callback(object sender, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
{
strGroupID = e.Parameter.ToString();
DataBindInfo();// 初始化页面信息
SelectUser();// 查找组里面的所有用户
DataCheck();
}
获取行展开改变事件 DetailRowExpandedChanged
protected void gvGroup_DetailRowExpandedChanged(object sender, ASPxGridViewDetailRowEventArgs e)
{
SYSolution_WebUI.ServiceReference.GroupInfo groupInfoModel = (SYSolution_WebUI.ServiceReference.GroupInfo)((ASPxGridView)sender).GetRow(e.VisibleIndex);// 获取选中行实体
       ASPxGridView gv = (ASPxGridView)gvGroup.FindDetailRowTemplateControl(e.VisibleIndex, "gvGroupName"); // 获取模板内aspxgridView ID名称
SYSolution_WebUI.ServiceReference.GroupInfo[] model = client.GroupSelUserList("GroupId='" + groupInfoModel.GroupId + "'");// 通过组ID值获取实体对象
if (model[0].UserInfoList != null && gv != null)// 当用用户列表值与子aspxgridView不为空
{
gv.DataSource = model[0].UserInfoList; // 子aspxgridView绑定数据源
gv.DataBind();
}
if (model[0].UserInfoList[0].Name == "") // 如果子aspxgridView中的用户列表为空时不显示 不展开
{
gvGroup.SettingsDetail.AllowOnlyOneMasterRowExpanded = false;
}
}
排序事件中重新绑定数据 BeforeColumnSortingGrouping
protected void gvGroup_BeforeColumnSortingGrouping(object sender, ASPxGridViewBeforeColumnGroupingSortingEventArgs e)
{
gvGroup.DetailRows.CollapseAllRows();// 关闭所有DetailoRow
gvGroup.DetailRows.ExpandRow(3);
}
重绑定数据使用时先选中行,再查看 FocusedRowChanged
Protected void aspxGridView_FocusedRowChanged(object sender,EventArgs e){} 行列绑定数据事件CustomUnboundColumnData
Protected void aspxGridView_CustomUnboundColumnData(object sender,EventArgs e){} .隐藏编辑列,在DataBound事件中
protected void ASPxGridView1_DataBound(object sender, EventArgs e)
{
if(ASPxGridView1.VisibleRowCount>0)
{
//ASPxGridView1.Columns[命令列索引]
(ASPxGridView1.Columns[4] as GridViewCommandColumn).NewButton.Visible = false;
}
}
05-02 22:30