如何用文本框填充Datagridview



我对编程很陌生,通常从YouTube上的课程或YouTube上的教程中学习。我的问题是我想从CSV文件加载文件,然后将加载的文件更新到DataGridView中。但为了做到这一点,我遵循了一个教程,但我不知道该用什么表格。

private void btnOtvor_Click(object sender, EventArgs e)
{
try
{
using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "CSV|*.csv", ValidateNames = true, Multiselect = false })
{
if (ofd.ShowDialog() == DialogResult.OK)
dataGridViewZamestnanci.DataSource = Readcsv(ofd.FileName);                                     
labelErrMsg.Text = "Subor otvoreny spravne";
labelErrMsg.ForeColor = System.Drawing.Color.Green;
timer1.Start();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

但是当我创建ADD按钮时:

private void btnPridat_Click(object sender, EventArgs e)
{
dataGridViewZamestnanci.Rows.Add(textBoxMeno.Text, textBoxTel.Text, textBoxProfesia.Text, textBoxTpp.Text);
dataGridViewZamestnanci.DataSource = dataGridViewZamestnanci;

它没有看到DatagridviewZamestanci,应该有数据表,但由于我直接从CSV文件加载了它,我很困惑,真的很失落。。。

有人能帮帮我吗?

正如我所评论的,您将得到一个错误,说明";不能以编程方式将行添加到数据绑定的网格中">。。。如果你试图执行代码行…

dataGridViewZamestnanci.Rows.Add(textBoxMeno.Text, textBoxTel.Text, textBoxProfesia.Text, textBoxTpp.Text);

你会得到这个错误。

但是,由于您声称网格数据源是DataTable,因此,您可以将网格DataSource"强制转换"为DataTable,然后将新行添加到"该"DataTable,而不是直接将行添加到网格。这个变化可能看起来像…

DataTable dt = (DataTable)dataGridViewZamestnanci.DataSource;
dt.Rows.Add(textBoxMeno.Text, textBoxTel.Text, textBoxProfesia.Text, textBoxTpp.Text);

如果代码要在网格中添加/更新/删除行,那么将网格DataSource设置为"全局"变量可能会更容易。然后,可以避免每次添加一行时将网格DataSource"强制转换"为DataTable。要做到这一点,您需要定义一个全局DataTable变量,称为GridDT

DataTable GridDT;

然后,在当前代码中,更改…

dataGridViewZamestnanci.DataSource = Readcsv(ofd.FileName);

至…

GridDT = Readcsv(ofd.FileName);
dataGridViewZamestnanci.DataSource = GridDT;

那么上面的第二个代码片段可以简化为…

GridTDT.Rows.Add(textBoxMeno.Text, textBoxTel.Text, textBoxProfesia.Text, textBoxTpp.Text);

我希望这是有道理的。

最新更新