FlexGrid for UWP
非連結モード
C1FlexGrid の使い方 > 非連結モード

C1FlexGrid は、C1CollectionView データソースと組み合わせて使用することで、その機能を完全に活用できるように設計されています。

ただし、このグリッドは、非連結モードで使用することもできます。単にグリッドに行と列を追加する場合は、次に示すように一般的なインデックス表記を使用して、セルの値を取得または設定できます。

C#
コードのコピー
        // 行/列を非連結グリッドに追加します
        for (int i = 0; i < 12; i++) // 4四半期から成る年を3年分
        {
         fg.Columns.Add(new Column());
        }
        for (int i = 0; i < 500; i++)
        {
         fg.Rows.Add(new Row());
        }

        // 非連結グリッドにデータを挿入します
        for (int r = 0; r < fg.Rows.Count; r++)
        {
         for (int c = 0; c < fg.Columns.Count; c++)
         {
         fg[r, c] = string.Format("cell [{0},{1}]", r, c);
         }
        }

C1FlexGrid ユーザーは、インデックス表記についても理解しておく必要があります。この表記は、このコントロールの WinForms バージョンで実装されるものと同じです。セルを指定するには、行インデックスと列インデックス、行インデックスと列名、または行インデックスと >Column オブジェクトを使用します。

インデックス表記は、連結モードと非連結モードで機能します。連結モードでは、データは、データソース内の項目から取得され、データソース内の項目に適用されます。非連結モードでは、データはグリッドによって内部的に保存されます。

UWP バージョンのコントロールでは、行インデックスと列インデックスに固定行と固定列が含まれません。次の図は、これを示しています。

このような表記では、インデックスはデータ項目のインデックスと一致し(行0には項目0が含まれます)、列カウントは表示されるプロパティ数と一致するため、インデックス作成が容易になります。

ただし、このような表記を使用する場合、固定セルのコンテンツにアクセスするには、RowHeader プロパティと ColumnHeader プロパティが必要です。

たとえば、次のコードを使用して行ヘッダーをカスタマイズできます。

C#
コードのコピー
// 非連結列ヘッダーを設定します
var ch = fg.ColumnHeaders;
ch.Rows.Add(new Row()); // 年度用のヘッダーと四半期用のヘッダー
for (int c = 0; c < ch.Columns.Count; c++)
{
ch[0, c] = 2009 + c / 4; // 年度
ch[1, c] = string.Format("Q {0}", c % 4 + 1); // 四半期
}

// 最初の固定行の結合を許可します
ch.Rows[0].AllowMerging = true;

// 非連結行ヘッダーを設定します
var rh = fg.RowHeaders;
rh.Columns.Add(new Column());
for (int c = 0; c < rh.Columns.Count; c++)
{
rh.Columns[c].Width = new GridLength(60);
for (int r = 0; r < rh.Rows.Count; r++)
{
rh[r, c] = string.Format("hdr {0},{1}", c == 0 ? r / 2 : r, c);
}
}

グリッドのコンテンツ領域を扱う際と同じオブジェクトモデルと手法を使用して、行および列ヘッダーをカスタマイズしてデータを挿入できます。