1

実行時に列数を設定するウルトラウィンググリッドがあります。ウルトラグリッドには、dock.fill に設定されたプロパティがあります。また、rowlayout の cardview にあります。5 つ以上の列がある場合、水平スクロールバーを表示する必要がなく、すべてのフィールドが表示されるように、wingrid に次の 5 つの列を次の行に表示し、行の最後まで表示するようにします。

例えば。

 Now they are arranged as
| Column1 | text | Column2 | text | Column3 | text | Column4 | text | Column5 | text |
and a scrollbar appears if they move beyond the right boundary.
Instead I want it to show only 3 columns in first row then the others in next row and so on.
No scrollbars.
I have only 1 card and only 1 row.code here
4

1 に答える 1

0

列の位置を設定するクラス。グリッド名は filtergrid です。他のことはほとんど説明です。設計でのみグリッドを宣言しました (何らかの理由で、コード内でグリッドを宣言したときに、この関数を使用できませんでした)。他のすべての設定はコードで行われました。

const int NoOfCols = 7;
private void SetDefaultColumnPositions(RowLayoutColumnInfosCollection colInfos)
{
    int totalColWidth = 0;
    int visibleColumnCount = 0;
    foreach (RowLayoutColumnInfo rlColInfo in colInfos)
    {
        if (rlColInfo.Column.Hidden == false)
        {
            visibleColumnCount++;
            totalColWidth += rlColInfo.Column.CellSizeResolved.Width;
        }
    }
    int NO_OF_ROWS = Convert.ToInt32(System.Math.Ceiling(visibleColumnCount * 1.0 / NoOfCols));
    int columnCount = 0;
    _filterGrid.Height = 22 * (NO_OF_ROWS);
    if (columnCount == colInfos.Count)
    {
        return;
    }
    for (int i = 0; i < NO_OF_ROWS; i++)
    {
        for (int j = 0; j < NoOfCols; j++)
        {
            if (columnCount >= colInfos.Count)
            {
                return;
            }
            while (colInfos[columnCount].Column.Hidden)
            {
                ++columnCount;
                if (columnCount >= colInfos.Count)
                {
                    return;
                }
            }
            if (columnCount < colInfos.Count)
            {
                colInfos[columnCount].Initialize((j +2) * 2, i * 2);
                ++columnCount;
            }
            if (columnCount >= colInfos.Count)
            {
                break;
            }
        }
        if (columnCount >= colInfos.Count)
        {
            break;
        }
    }
}
于 2012-11-14T12:15:34.800 に答える