添加/删除DataTable的行

发布于 2025-02-05 04:55:21 字数 1728 浏览 4 评论 0原文

我一直在尝试从GridView中的数据表中添加和删除行。一个例外情况下,它会添加作品,每次都会再次绘制表(这很可能是我想要的其余问题)。当我尝试删除一行时,我会继续传达如此多的行不存在的消息。但是dt.Rows.Count给出真正的价值。

我认为,当功能称为功能时,它一直从一无所获。当我将一些值放在单元格中并添加一行时,我对此进行了检查。是的,它再次吸引了一切。因此,我认为我必须重新开始,我对如何解决这个问题有些迷失。

我将尝试显示我目前拥有的代码:

private void tbxMachineTotal_TextChanged(object sender, EventArgs e)
{
//Create data table for the amount of machines at particular site


DataTable dt = new DataTable();
dt.Columns.Add("Machine Name");
dt.Columns.Add("Serial No");
dt.Columns.Add("Type No");
dt.Columns.Add("Type");
dt.Columns.Add("Purpose");
dt.Columns.Add("Nom Speed (rpm)");
dt.Columns.Add("Freq (Hz)");
dt.Columns.Add("Nom power (kW)");

int count = Convert.ToInt32(txbMachineTotal.Text);
int TotalDelta = count - MachineTotal;

    if (TotalDelta == 0)
    {
        for (int i = 1; i <= count; i++)
        {
        var row = dt.NewRow();
        dt.Rows.Add(row);
        }
        dataGridView1.DataSource = dt;

    }
    else if (TotalDelta > 0)
    {
        for (int i = 1; i <= count; i++)
        {
        var row = dt.NewRow();
        dt.Rows.Add(row);
        }
    dataGridView1.DataSource = dt;

    }
    else if (TotalDelta < 0)
    {
    TotalDelta = (TotalDelta * -1);
         for (int i = 1 ; i <= TotalDelta ; i++)
         {
         //var row = dt.NewRow();
         dt.Rows[i].Delete() ;
         }
    dataGridView1.DataSource = dt;
    }
MachineTotal = Convert.ToInt32(txbMachineTotal.Text);
label5.Text = Convert.ToString(dt.Rows.Count);
}

因此,我的问题是如何创建一个数据表并将其附加到gridview,然后当您要添加或删除时,例如最后2行,此类工作此类dat您的数据不会丢失。 我认为我需要避免将整个桌子再次绘制。但我不知道该怎么做。

该计划基本上是为了创建一种模板,其中我想将其解析到XML文件。因此,我可以保存并存储它,然后将其打开以获取更多事情。

提前致谢

I've been trying to add and remove rows from a DataTable in a Gridview. Surpisingly adding works with one exception, it draws the table all over again every time (here is most probably the issue with the rest I want). When I try to remove a row I keep having the message that so many rows don't exists. But dt.rows.count give truly a value.

I think when the function is called it start all the time over again from nothing. I checked this when I place some values in the cells and added a row. And yes it draws everything all over again. So I think I have to start all over again and I'm a bit lost on how to tackle this issue.

I'll try to show the code I have at the moment:

private void tbxMachineTotal_TextChanged(object sender, EventArgs e)
{
//Create data table for the amount of machines at particular site


DataTable dt = new DataTable();
dt.Columns.Add("Machine Name");
dt.Columns.Add("Serial No");
dt.Columns.Add("Type No");
dt.Columns.Add("Type");
dt.Columns.Add("Purpose");
dt.Columns.Add("Nom Speed (rpm)");
dt.Columns.Add("Freq (Hz)");
dt.Columns.Add("Nom power (kW)");

int count = Convert.ToInt32(txbMachineTotal.Text);
int TotalDelta = count - MachineTotal;

    if (TotalDelta == 0)
    {
        for (int i = 1; i <= count; i++)
        {
        var row = dt.NewRow();
        dt.Rows.Add(row);
        }
        dataGridView1.DataSource = dt;

    }
    else if (TotalDelta > 0)
    {
        for (int i = 1; i <= count; i++)
        {
        var row = dt.NewRow();
        dt.Rows.Add(row);
        }
    dataGridView1.DataSource = dt;

    }
    else if (TotalDelta < 0)
    {
    TotalDelta = (TotalDelta * -1);
         for (int i = 1 ; i <= TotalDelta ; i++)
         {
         //var row = dt.NewRow();
         dt.Rows[i].Delete() ;
         }
    dataGridView1.DataSource = dt;
    }
MachineTotal = Convert.ToInt32(txbMachineTotal.Text);
label5.Text = Convert.ToString(dt.Rows.Count);
}

So my question is how does one create a DataTable and append it to the gridview and then when you want to add or remove e.g. the last 2 rows this works such dat the rest of your data doesn't get lost.
I assume I need to avoid the whole table will be drawn over again. But that I don't know how to do.

The plan is basically to create a kind of template with data which I want to parse to a XML file. So I can save it and store it and open it later for further things.

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文