【问题标题】:How to Insert a Column in DataGridView on button Click?如何在单击按钮时在 DataGridView 中插入列?
【发布时间】:2017-08-11 13:00:43
【问题描述】:

我的 Windows From 中有 DataGridView 在设计时有 7 列。现在,当我调用LoadItemReport() 函数时,我想在 DataGridView 的第三个位置插入一个新列。我在单击按钮时调用此函数。添加一列应该只发生一次。如果之前添加了该列,则下次不应添加该列。

这是我的代码。

private void LoadItemReport(List<InvoiceInfo> invList,List<string> temList)    
{    
    try    
    {
        DataGridViewColumn clqty = new DataGridViewColumn()
        {
            HeaderText = "Qunatity",
            CellTemplate = new DataGridViewTextBoxCell(),
            Name  = "clqty",
            Width = 10
        };

        dgvItems.Columns.Insert(3, clqty);
    }
    catch
    {
    }  
}

现在,当我单击按钮时,它每次都会添加新列。我希望它只发生一次。我哪里错了?

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

    在插入之前检查网格中是否有具有该名称的列。

    DataGridViewColumn clqty = new DataGridViewColumn()
    {
        HeaderText = "Qunatity",
        CellTemplate = new DataGridViewTextBoxCell(),
        Name  = "clqty",
        Width = 10
    };
    
    if (!dgvItems.Columns.Contains("clqty"))
         dgvItems.Columns.Insert(3, clqty);
    

    编辑
    编辑为仅在列不在网格中时创建列,归功于@metrosmurf

    if (!dgvItems.Columns.Contains("clqty"))
    {
        DataGridViewColumn clqty = new DataGridViewColumn()
        {
            HeaderText = "Qunatity",
            CellTemplate = new DataGridViewTextBoxCell(),
            Name  = "clqty",
            Width = 10
        };
        dgvItems.Columns.Insert(3, clqty);
    }
    

    【讨论】:

    • clqty 的创建只应在视图不包含列(按名称)时完成,而不是之前。
    • @MetroSmurf 我的回答应该有效,但你是对的。如果我们不打算对它做任何事情,则无需创建 DataGridViewColumn。
    猜你喜欢
    • 2014-06-20
    • 1970-01-01
    • 2012-08-25
    • 2018-01-02
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多