添加/删除DataTable的行
我一直在尝试从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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论