如何在Winform DataGridView中创建不同的单元格格式

时间:2009-02-26 22:30:45

标签: c# winforms datagridview

我有一个DataGridView,我绑定到DataTable DataTable是一个全数字值 要求DataGridView中的每n行都包含文本,而不是数值(以可视方式分隔用户的部分)。

我很高兴在绑定后将这些文本数据放在DataTable或DataGridView中,但是我无法看到将这些文本数据放入任何两种需要数字数据的列格式的方法 - 我得到了一个“不能将字符串放在十进制“错误中”。

如何改变DataTable或DataGridView中特定行或单元格的格式?

3 个答案:

答案 0 :(得分:5)

您可以为DataGridView的CellFormatting事件提供处理程序,例如:

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 :(得分:1)

我已将Janus GridEx用于此类非标准行为。 (部分原因是它不仅仅是这个,比如分组和总结,cardview等)网站上有一些很好的演示。

(不是销售宣传;我只是在使用他们的组件时有很好的经验。)

Screenshot of grouped and summed grid data
(来源:janusys.com

答案 2 :(得分:1)

这可以解决您的问题吗?

// 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...";

原始数据表绑定应该仍然存在。