我对编程很陌生,通常从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);
我希望这是有道理的。