为什么我的专栏消失了?如何在c#中的代码中重新排序列?

时间:2016-02-05 09:08:56

标签: c# winforms

我在Visual Studio中遇到了一个非常奇怪的问题。我在我的窗体上用10列创建了网格。

enter image description here

一切正常,直到我重新排序列 - 所有列都消失了!

enter image description here

enter image description here

我点击撤消,它只返回给我6列。

enter image description here

当我想添加4个缺失的列时,程序抛出错误:此列已存在(或类似的东西)。然后我必须获得最新版本(我之前签入)以获取所有列。当我在网格中更改任何内容时,每次都会发生相同的错误。我试图删除网格并制作新的 - 同样的错误。我甚至试图删除WF并制作新的错误。

知道为什么会这样吗?

知道如何重新排序代码中的列并绕过这个奇怪的错误吗?

2 个答案:

答案 0 :(得分:3)

最好的方法是控制代码而不是你正在做的助手。 为此,请使用以下示例:

if (dataGridView1.DataSource != null)
{
    dataGridView1.Columns["idColumn1"].HeaderText = "Text 1";
    dataGridView1.Columns["idColumn1"].Width = 60;
    dataGridView1.Columns["idColumn1"].Index = 0;

    dataGridView1.Columns["idColumn2"].HeaderText = "Text 2";
    dataGridView1.Columns["idColumn2"].Width = 60;
    dataGridView1.Columns["idColumn2"].Index = 1;

    dataGridView1.Columns["idColumn3"].HeaderText = "Text 3";
    dataGridView1.Columns["idColumn3"].Width = 60;
    dataGridView1.Columns["idColumn3"].Index = 2;

    dataGridView1.Columns["idColumn4"].Visible= false;
    dataGridView1.Columns["idColumn5"].Visible= false;
    dataGridView1.Columns["idColumn6"].Visible= false;
}

答案 1 :(得分:0)

我知道主要问题没有解决,但是如果有人有同样的错误,你可以在这样的代码中重新排序你的列:

private void TransakcijaZaFakturisanje_Load(object sender, EventArgs e)
     {
         gridTransakcijaZaFakturisanje.Columns["SifraTransakcije"].DisplayIndex = 0;
         gridTransakcijaZaFakturisanje.Columns["Opis"].DisplayIndex = 1;
         gridTransakcijaZaFakturisanje.Columns["SifraKomitenta"].DisplayIndex = 2;
         gridTransakcijaZaFakturisanje.Columns["IdUgovor"].DisplayIndex = 3;
         gridTransakcijaZaFakturisanje.Columns["IdUsluga"].DisplayIndex = 4;
         gridTransakcijaZaFakturisanje.Columns["VaziOd"].DisplayIndex = 5;
         gridTransakcijaZaFakturisanje.Columns["VaziDo"].DisplayIndex = 6;
         //and so on...
     }

我会继续研究这个问题,如果我找到了有用的东西,我会在这里输入。谢谢大家的支持!