• ASPxGridView 用法


    一、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 < 2) {
                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; } }
  • 相关阅读:
    Input.mousePosition 与Input.GetAxis("Mouse X")
    snmp4j 笔记一
    SNMPWALK 命令
    lo4j2 加载与配置
    vue 使用editor 编辑器以及打包线上不显示问题
    js以数组值寻找对应id的name
    浏览器视频加速插件使用Tampermonkey
    下拉树形
    iview DatePicker 日期date验证报错
    百度网盘免费分享
  • 原文地址:https://www.cnblogs.com/lanyubaicl/p/6483177.html
Copyright © 2020-2023  润新知