DevExpress社ASP.NETの「ASPxGridView」にヘッダー行を表示させる
DevExpress社のWinFomrsでは「GridView」にヘッダー行を表示させる機能(GridOptionsView.ShowIndicator)が付いています。
一方、ASP.NETでは、「ASPxGridView」にヘッダー行を表示させる機能が付いていません。
そこで、「ASPxGridView」のセルのハイライト設定で、疑似的にヘッダー行を表示させる機能が実現できたので、備忘録として残しておきます。
手順は以下の通り
①グリッドに表示させるオブジェクトに行番号のプロパティ及び値を設定
↓
②「ASPxGridView」のセルのハイライト設定を実装する。
以下、設定例です。
UserListControl.aspx.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public partial class UserListControl : System.Web.UI.UserControl { protected UserService UserService { get; set; } protected void ASPxRoundPanel2_Init(object sender, EventArgs e) { var users = this.UserService.GetUsers(); var rowno = 1; users.ForEach(x => { x.RowNo = rowno++; }); var formatCondition = new GridViewFormatConditionHighlight(); formatCondition.FieldName = "RowNo"; formatCondition.Expression = "[RowNo] > 0"; formatCondition.Format = GridConditionHighlightFormat.Custom; formatCondition.CellStyle.BackColor = ColorTranslator.FromHtml("#FAFAFA"); this.GridViewUsers.FormatConditions.Add(formatCondition); this.GridViewUsers.DataSource = users; this.GridViewUsers.DataBind(); } } |
UserListControl.ascx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<dx:ASPxRoundPanel ID="ASPxRoundPanel2" runat="server" Width="100%" HeaderText="利用者" Theme="Moderno" ClientInstanceName="RoundPanel2" ContentPaddings-Padding="0px" OnInit="ASPxRoundPanel2_Init"> <ContentPaddings Padding="10px"></ContentPaddings> <PanelCollection> <dx:PanelContent runat="server"> <dx:ASPxGridView ID="GridViewUsers" runat="server" Width="100%" Theme="Moderno" KeyFieldName="UserId"> <Columns> <dx:GridViewDataTextColumn FieldName="RowNo" Caption="No" /> <dx:GridViewDataTextColumn FieldName="UserId" Caption="利用者ID" /> <dx:GridViewDataTextColumn FieldName="UserName" Caption="利用者名" /> <dx:GridViewDataTextColumn FieldName="UserStatus" Caption="利用者状態" /> <dx:GridViewDataTextColumn FieldName="UserEmail" Caption="E-mail" /> <dx:GridViewDataTextColumn FieldName="UpdTs" Caption="更新日時" /> <dx:GridViewDataTextColumn FieldName="UpdUser" Caption="更新者" /> </Columns> <SettingsSearchPanel Visible="true" /> <Settings GridLines="Both" ShowGroupPanel="true" ShowFilterRow="false" /> <SettingsBehavior AllowSelectByRowClick="true" /> </dx:ASPxGridView> </dx:PanelContent> </PanelCollection> </dx:ASPxRoundPanel> |
以下、画面イメージ
ASP.NETでは、WinFomrsでは当たり前と思っていた機能が見当たらず、苦戦しています。Webシステムを作ることが難しさを改めて痛感しています。
一方で、難しいながらも、要望している機能が実現しているのも、DevExpress社ASP.NETの機能性の高さおかげかなと感じています。