Как я могу создать различные форматы ячеек в Winform DataGridView - PullRequest
4 голосов
/ 27 февраля 2009

У меня есть DataGridView, который я привязываю к DataTable.
DataTable - это все числовые значения.
Существует требование, чтобы каждые n строк в DataGridView содержали текст, а не числовые значения (чтобы визуально отделить разделы для пользователя).

Я счастлив поместить эти текстовые данные в DataTable или в DataGridView после привязки, но я не вижу способа поместить эти текстовые данные в один из них, поскольку для обоих форматов столбцов требуются числовые данные - я получаю не могу поместить строку в десятичную "ошибку для обоих.

Есть идеи, как изменить формат определенной строки или ячейки в DataTable или DataGridView?

Ответы [ 3 ]

5 голосов
/ 03 марта 2009

Вы можете предоставить обработчик для события CellFormatting DataGridView, например:

public partial class Form1 : Form
{
    DataGridViewCellStyle _myStyle = new DataGridViewCellStyle();

    public Form1()
    {
        InitializeComponent();

        _myStyle.BackColor = Color.Pink;
        // We could also provide a custom format string here 
        // with the _myStyle.Format property
    }

    private void dataGridView1_CellFormatting(object sender, 
        DataGridViewCellFormattingEventArgs e)
    {
        // Every five rows I want my custom format instead of the default
        if (e.RowIndex % 5 == 0)
        {
            e.CellStyle = _myStyle;
            e.FormattingApplied = true;
        }
    }

    //...
}

Для получения помощи по созданию собственных стилей см. Тему DataGridView.CellFormatting Event в интерактивной справке.

1 голос
/ 27 февраля 2009

Решает ли это вашу проблему?

// Set the data source.
dataGridView1.DataSource = dataTable1;

// Create a new text box column.
DataGridViewColumn c1 = new DataGridViewTextBoxColumn();
const string C1_COL_NAME = "Custom1";
c1.Name = C1_COL_NAME;

// Insert the new column where needed.
dataGridView1.Columns.Insert(1, c1);

// Text can then be placed in the rows of the new column.
dataGridView1.Rows[0].Cells[C1_COL_NAME].Value = "Some text...";

Исходные привязки таблицы данных должны существовать.

1 голос
/ 27 февраля 2009

Я использовал Janus GridEx для этого типа нестандартного поведения. (Частично потому, что это намного больше, чем просто группировка и суммирование, просмотр карт и т. Д.) На сайте есть несколько хороших демонстраций.

(Не коммерческое предложение; я только что получил хороший опыт использования их компонентов.)

Screenshot of grouped and summed grid data
(источник: janusys.com )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...