【问题标题】:Data from another class cannot be put to a datagridview不能将来自另一个类的数据放入 datagridview
【发布时间】:2018-01-29 06:26:43
【问题描述】:

美好的一天。我已经将一个数据变量从一个类传递到另一个类,以放入主窗体中的 datagridview 中。我在每种情况下都放置了一些消息框,以了解它访问所述功能并且数据已明确传递。但是当我运行程序时。该表没有将数据放入其中。

这是我传递数据时的代码

if (txtCode1.ElementAt(intCtr + 1).Equals(val4)) {
   MessageBox.Show("Lol");
   Compilourdes_GUI cmp = new Compilourdes_GUI();
   cmp.AddtotblLexeme(val2, val2);
   break;
}

这里是 AddtotblLexeme 的代码

public void AddtotblLexeme(string lexeme, string token) {
   MessageBox.Show(lexeme+" "+token);
   tblLexeme.Rows.Add(lexeme , token); //adding tokens and lexeme to the table
}

我制作数据表的代码

private void Start()
{
    tbl1.AutoGenerateColumns = true;
    tbl1.DataSource = null;
    tbl1.Rows.Clear();

    InitTable();

    string txtCode1 = txtCode.Text;
    LexicalAnalyzer lex = new LexicalAnalyzer(txtCode1);
    lex.StartLex();
    tbl1.DataSource = tblLexeme;
}

public void InitTable()
{
    tblLexeme = new DataTable();
    tblLexeme.Columns.Add("Lexeme", typeof(string));
    tblLexeme.Columns.Add("Token", typeof(string));
}

DataTable tblLexeme = new DataTable();

这是输出 的图像。 “TEST”这个词应该在表格里面,但是正如你所看到的,它没有被放进去。

【问题讨论】:

  • 您没有显示此代码,但我认为 tblLexeme 是 DataGridView 的数据源?
  • Program.compForm - 这是什么?
  • @JonathanWillcock 是的。 Sinatr,我将 compForm 初始化为 GUI 表单的新实例。
  • 在您的屏幕截图中,您显示列 Lexeme 和 Token。这些是绑定的列吗?
  • 我很抱歉。我不明白你的意思。

标签: c# visual-studio oop


【解决方案1】:

好的,我想我了解您的问题。如果您直接在设计器中添加列,我猜您添加了未绑定的列。如果是这样,则 DataGridView 无法匹配您要添加到表中的行的行。若要解决此问题,请从 DatagridView 中删除列。然后确保您的 DataGridView 具有属性 AutoGenerateColumns = true,然后再设置 DataSource = tblLexeme。现在有两件事会自动发生:首先 DataGridView 从您的 DataTable 中获取列;其次,当向 DataTable 添加新行时,它应该自动显示在 DataGridView 中。

在 AddtotblLexeme 中,出于测试目的,您能否在 Rows.Add() 的位置添加:

DataRow nR = tblLexeme.NewRow();
nR[0] = lexeme;
nR[1] = token;
tblLexeme.Rows.Add(nR);

然后在调试器中检查 nR 确实有一个包含 2 列的 ItemArray。

【讨论】:

  • 我得到这个错误:“输入数组比这个表中的列数长。”
  • @schwall 请编辑您的问题并在您创建数据表的位置显示代码
  • 它说找不到第0列。
  • 那么要么没有调用 Start,要么重新创建了 DataTable。我真的需要查看完整的代码来确定哪个。如果你不想在这里发布,你可以给我发电子邮件。
  • 好的,先生。您需要代码的哪些部分?我也可以给你发电子邮件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多