【问题标题】:split string by character and add to different columns in DataGridView in c#在c#中按字符拆分字符串并添加到DataGridView中的不同列
【发布时间】:2013-07-24 17:27:33
【问题描述】:

我有这个代码:

string strdata = Encoding.Unicode.GetString(buffer);
char[] splitchar = new Char[] { '\x00' };
string[] assetdata = strdata.Split(splitchar, strdata.Length);

缓冲区是一行文本数据,由 4 种类型的变量组成。您可以在此链接之后看到在 Unicode 缓冲区中编码的示例: http://pastebin.com/ScdGX8it 所以这里有 4 种类型的数据需要填充到 DataGridView 中以 4 列分隔的行中,这样我就可以对其进行排序和操作。 Assetdata 是数组,此数据由每个值分隔为单个元素,但我需要将它们分组 - 这是主要问题。 谢谢。

【问题讨论】:

  • 您能否说明您希望数据如何组织和分组?您说您想要 4 列数据,但您的数据转储显示的值比每个部分中的值多。
  • 其实就是用这个\x00字符分隔的4种数据。 ,所以现在它看起来像 a1-b1-c1-d1-a2-b2-c2-d2 等等,其中 "-" 是 "\x00" 字符,a b c d 是数据类型,数字代表只是其中的差异。我希望它在 DataGridView 中分组,在 a b c d 列中,data1 data2 data3 data4 相应地按行插入。希望能解释我想要什么。 grab.by/oL4C - 在这里您可以看到屏幕截图,在列表框中您可以看到数据分隔的行。现在选择了第 4 种类型。所以我希望它相应地插入到顶部的 DataGridView 中。

标签: c# arrays string winforms datagridview


【解决方案1】:

这是一种不使用 LINQ 的方法,它使用数据表作为 datagridview 的数据源。

        DataTable dt = new DataTable("T1");
        dt.Columns.AddRange(new DataColumn[] { new DataColumn("A"), new DataColumn("B"), new DataColumn("C"), new DataColumn("D")});
        for (int i = 0; i < assetdata.Length; i += 4)
        {
            dt.Rows.Add(new string[]{assetdata[i],assetdata[i+1],assetdata[i+2],assetdata[i+3]});
        }
        dataGridView1.DataSource = dt;

通过这种方式,您可以修改数据表并更新 datagridview,这可能会为您提供更多选择,因为这更符合 datagridview 的设计方式。

【讨论】:

  • 该死的!这完美!非常感谢,我并没有考虑创建数据表......虽然您需要在assetdata.Length 添加-4,否则它会给出索引超出范围错误。还有一件事 - 如果我已经创建了列,我如何强制 Datasource 使用这些列进行插入?因为它现在添加了新列,即使我使用相同的名称。
【解决方案2】:

LINQ 是你的朋友。浏览有关分组的教程。这应该很容易,因为你已经有了一个字符串[]。完成查询后,调用 ToIEnumerable() 扩展方法以绑定到 DataGridView。

http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

【讨论】:

  • 问题是现在连 c# 都不是我的朋友,因为我只学习了 2 个月...我试图避免使用 LINQ,因为我想了解它是如何工作的是……
  • LINQ 是 C#/.NET 不可或缺的一部分 - 使用它可以了解框架的不同部分,例如:泛型、lambda 方法、匿名类型、集合/接口。如果您想在没有 LINQ 的情况下执行此操作,您可以手动创建强类型类,并自己执行分组逻辑,完成后将所有项目放入 List 中,以绑定到 DataGridView。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-13
  • 2018-01-15
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多