【问题标题】:How to bind csv file to a drop down list?如何将 csv 文件绑定到下拉列表?
【发布时间】:2013-11-22 12:16:28
【问题描述】:

我正在使用 Microsoft Visual Studio,并使用 C# 在 ASP.net 中进行编码。

我有一个希望以编程方式绑定到 csv 文件的下拉列表。我不知道如何或从哪里开始。

我之前绑定了一个 ACCESS 数据库 (.mdb),但不知道 csv 是如何工作的。 有人可以指导我。

【问题讨论】:

  • 您需要精确绑定什么? CSV 的内容是什么?
  • 首先,您需要将 csv 文件的内容读入列表或DataTable,然后将ComboBox 绑定到该对象。
  • 你也可以使用 CSV 的 SQL 驱动
  • 抱歉回复晚了。那么excel文件有超过100条记录,所以我将它保存在一个csv文件中。 excel文件中每一列的名称需要显示在下拉列表中。所以基本上有一个读取 csv 文件,两个拉出所有列的名称以显示在下拉列表中
  • 我愿意使用 excel 文件,如果 csv 更难绑定并在其上执行更多任务

标签: c# visual-studio-2010 csv drop-down-menu binding


【解决方案1】:

好吧,看来您必须阅读它、解析它并绑定它。

现在,我认为最简单的方法是使用 linq 构建自定义对象集合,然后您可以根据需要绑定到该集合。

让我们假设您的 CSV 包含 name,age 以简化操作。首先,将所有行读入一个集合(使用您喜欢的方法),假设它是InputLines

使用 linq 获得一个不错的对象集合:

var my_objects_collection =  
    from line in InputLines
    let parts = line.Split(',')
    select new { name = parts [0], age =  parts [1] };

然后,阅读this article(如果有帮助,请随意评价)以了解如何使用DisplayMemberPath 绑定到该集合的特定值,以及如何使用SelectedValuePath 从那里定位特定位。

这应该会让你走向光明的未来:)


编辑:
Linq 是您的朋友……它让您可以将对象集合视为 SQL 查询。一旦你了解它,你能取得的成就是惊人的。这是开始101 linq examples的一个很好的链接。

您甚至可以执行以下操作以将文件读取到 linq 表达式中:

var collection_of_objects = 
    (from line in File.ReadAllLines("your_csv_name.csv").Skip(1)
        let parts = line.Split(',')
        select new
        {
            ID = parts[0],
            First = parts[1],
            Last = parts[2],
            Email = parts[3],
            Gender = parts[4],
            Race = parts[5]
        }
    ).ToList();

电话:
File.ReadAllLines("your_csv_name.csv").Skip(1)
转换为:在跳过第一行后读取所有行,在我的例子中包含标题:id,first_name,last_name,email,gender,race,然后对于每一行,它将创建一个具有在new 之后定义的属性的对象(请注意,我是使用let 定义一个临时变量来保存Split 的结果。
最后,ToList() 用于获取具有属性的“真实”对象列表(没有它,您将获得一个可枚举的对象,但您将无法像使用“真正的”类对象)。

这允许您执行以下操作:

var some_obj = collection_of_objects.Skip(10).Take(1);

为了获取第 11 个对象,然后您可以执行 some_obj.Gendersome_obj.Race 之类的操作 :)

如果您想全部打印:

foreach (var obj in collection_of_objects)
    Console.Out.WriteLine("Some obj fields: {0}, {1}, {2}" , obj.ID, obj.First, obj.Race);

【讨论】:

  • 感谢您的回复,我会尝试一下,记住我不知道 Linq 是什么。所以接下来我要做的就是让自己熟悉 linq。
  • 非常感谢您的帮助,先生。现在我有很多例子可以在周末练习和学习。非常感谢。我会在这篇文章中回复你我的进展情况。
  • Oy,也是一个 oz 伴侣...... :) 总是乐于提供帮助。愿您选择的团队也能赢得灰烬……
  • 不幸的是,还没有时间真正观看这个系列,所以不知道那里发生了什么。不过期待明年的澳网。我还有一个问题,为了让我阅读 csv 文件,我是否需要创建一个单独的类来包含所有列的描述?如果是这样,我在哪里创建它?或者我可以在 Default.aspx.cs 中完成所有操作
  • 随心所欲,随心所欲。真的由你决定
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多