【问题标题】:How to manually set column header to datagridview with data from database如何使用数据库中的数据手动将列标题设置为 datagridview
【发布时间】:2015-11-08 15:05:12
【问题描述】:

希望你能帮我解决这个问题。目前,我正在为我们的论文开发一个动态工资单系统,其主要功能是为不同的公司创建多种工资单格式。我可以创建简单的 datagridview 显示基本员工信息,例如员工的“全名”和“初始费率”,但是否可以使用按钮功能(非硬编码)添加新的标题/s,该功能将保存一个值以防万一用户想加免赔额

【问题讨论】:

  • 请说明您尝试了什么以及失败的原因。

标签: c# datagridview


【解决方案1】:

您未指定平台。

如果是 WinForms

  1. 通过单击或其他方式添加未绑定的列:

        var column = new DataGridViewColumn(new DataGridViewTextBoxCell());
        column.Name = "Calculated Column";
        column.HeaderText = "Calculated Column";            
        dataGridView1.Columns.Add(column);
    
  2. 添加datagridview.cellformatting的处理

    private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (dataGridView1.Columns[e.ColumnIndex].Name == "Calculated Column")
        {
            var data = (DataObj)dataGridView1.Rows[e.RowIndex].DataBoundItem;
            e.Value = GetCalculatedColumnValue(data);
            e.FormattingApplied = false;
        }   
    }
    
  3. 增加对列输入数据的处理

    private void dataGridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e)
    {
        if (dataGridView1.Columns[e.ColumnIndex].Name == "Calculated Column")
        {
            var data = (DataObj)dataGridView1.Rows[e.RowIndex].DataBoundItem;
            SetCalculatedColumnValue(data, e.Value);
        }   
    }
    

附:在我的情况下,我使用 DataObj 作为数据有界对象

public class DataObj
{
    public float Price { get; set; }
    public int Amount { get; set; }
}

如果您只需要显示外部数据(只读列)(不需要 p3)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2015-10-02
    相关资源
    最近更新 更多