[英]How to bind csv file to a drop down list?
我正在使用Microsoft Visual Studio,並使用C#在ASP.net中編碼。
我有一個下拉列表,我希望以編程方式綁定到csv文件。 我不知道如何或從哪里開始。
我以前綁定到ACCESS數據庫(.mdb)但不知道csv如何工作。 有人可以指導我。
好吧,看來你必須閱讀它,解析它並綁定它。
現在,我認為最簡單的方法是使用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] };
然后,閱讀本文 (並且可以隨意評估它是否有用)了解如何使用DisplayMemberPath
綁定到該集合的特定值,以及如何使用SelectedValuePath
來定位特定的從那里開始。
這應該會讓你走向光明的未來:)
編輯:
Linq是你的朋友......它可以讓你像對待SQL查詢一樣對待你的對象集合。 一旦你了解它,你可以實現的是驚人的。 這是啟動101 linq示例的一個很好的鏈接。
你甚至可以做這樣的事情,以便將文件讀入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.Gender
或some_obj.Race
:)
如果你想打印它們全部:
foreach (var obj in collection_of_objects)
Console.Out.WriteLine("Some obj fields: {0}, {1}, {2}" , obj.ID, obj.First, obj.Race);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.