作成日: 2022/03/11 最終更新日: 2022/03/30
文書種別
使用方法
詳細
AlternatingRowsDefaultCellStyleの設定した状態でフィルタリングを行った場合、初期表示で配色されたままの状態で行の並べ替えが行われます。
フィルタリング後も交互行のスタイルを設定したい場合、フィルタが設定されたときには交互行スタイルを解除して独自に行のスタイルを設定する必要があります。
[Visual Basic]
[C#]
フィルタリング後も交互行のスタイルを設定したい場合、フィルタが設定されたときには交互行スタイルを解除して独自に行のスタイルを設定する必要があります。
[Visual Basic]
Imports GrapeCity.Win.MultiRow
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' データの作成
Dim dt As New DataTable("Test")
dt.Columns.Add("ColA", GetType(Int32))
dt.Columns.Add("ColB", GetType(String))
For i As Integer = 0 To 19
dt.Rows.Add(i Mod 4, String.Format("R{0}C1", i))
Next
dt.AcceptChanges()
' MultiRowの設定
Dim template1 As Template = Template.CreateGridTemplate(2)
Dim hddList As New HeaderDropDownList()
AddHandler hddList.Closed, AddressOf hddList_Closed
hddList.CellName = "textBoxCell1"
hddList.Items.Add(New DropDownShowAllFilterItem())
hddList.Items.Add(New DropDownAutoFilterItem())
DirectCast(template1.ColumnHeaders(0)(0), ColumnHeaderCell).DropDownList = hddList
template1.Row.Cells(0).DataField = "ColA"
template1.Row.Cells(1).DataField = "ColB"
GcMultiRow1.Template = template1
GcMultiRow1.AllowUserToAddRows = False
GcMultiRow1.DataSource = dt
GcMultiRow1.AlternatingRowsDefaultCellStyle.BackColor = Color.Lavender
End Sub
Private Sub hddList_Closed(sender As Object, e As EventArgs)
' "(すべて表示)"以外がチェックされた場合
Dim hddList As HeaderDropDownList = sender
If Not hddList.Items(0).Checked Then
' 交互行の背景色の初期化
GcMultiRow1.AlternatingRowsDefaultCellStyle.BackColor = Color.Empty
' フィルタ後に表示されている行の偶数行の背景色の設定
Dim count As Integer = -1
For i As Integer = 0 To GcMultiRow1.RowCount - 1
If hddList.GcMultiRow.Rows(i).Displayed Then
count += 1
If count Mod 2 = 1 Then
hddList.GcMultiRow.Rows(i).BackColor = Color.Lavender
End If
End If
Next
Else
' 行の背景色の初期化
For i As Integer = 0 To GcMultiRow1.RowCount - 1
GcMultiRow1.Rows(i).BackColor = Color.Empty
Next
' 交互行の背景色の設定
GcMultiRow1.AlternatingRowsDefaultCellStyle.BackColor = Color.Lavender
End If
End Sub
End Class
[C#]
using GrapeCity.Win.MultiRow;
using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
namespace sample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// データの作成
DataTable dt = new DataTable("test");
dt.Columns.Add("ColA", typeof(Int32));
dt.Columns.Add("ColB", typeof(String));
for(int i = 0; i < 20; i++)
{
dt.Rows.Add(i % 4, String.Format("R{0}C1", i));
}
dt.AcceptChanges();
// MultiRowの設定
Template template1 = Template.CreateGridTemplate(2);
HeaderDropDownList hddList = new HeaderDropDownList();
hddList.Closed += hddList_Closed;
hddList.CellName = "textBoxCell1";
hddList.Items.Add(new DropDownShowAllFilterItem());
hddList.Items.Add(new DropDownAutoFilterItem());
(template1.ColumnHeaders[0][0] as ColumnHeaderCell).DropDownList = hddList;
template1.Row.Cells[0].DataField = "ColA";
template1.Row.Cells[1].DataField = "ColB";
gcMultiRow1.Template = template1;
gcMultiRow1.AllowUserToAddRows = false;
gcMultiRow1.DataSource = dt;
gcMultiRow1.AlternatingRowsDefaultCellStyle.BackColor = Color.Lavender;
}
private void hddList_Closed(Object sender, EventArgs e)
{
HeaderDropDownList hddList = (HeaderDropDownList)sender;
if (!hddList.Items[0].Checked)
{
// 交互行の背景色の初期化
gcMultiRow1.AlternatingRowsDefaultCellStyle.BackColor = Color.Empty;
// フィルタ後に表示されている行の偶数行の背景色の設定
int count = -1;
for(int i = 0; i < gcMultiRow1.RowCount; i++)
{
if (hddList.GcMultiRow.Rows[i].Displayed)
{
count += 1;
if ((count % 2) == 1)
{
hddList.GcMultiRow.Rows[i].BackColor = Color.Lavender;
}
}
}
}
else
{
// 行の背景色の初期化
for(int i = 0; i < gcMultiRow1.RowCount; i++)
{
gcMultiRow1.Rows[i].BackColor = Color.Empty;
}
// 交互行の背景色の設定
gcMultiRow1.AlternatingRowsDefaultCellStyle.BackColor = Color.Lavender;
}
}
}
}