CSV列到ASP DropdownList

时间:2015-05-12 13:04:40

标签: c# asp.net csv drop-down-menu

我正在尝试使用CSV中的列填充ASP下拉列表。我能够使用下面的代码来完成它,但是,它显示重复,因为另一个列的值都是唯一的(因此使用.distinct()是不好的)。以下是我的CSV条目示例:

的env,应用程序,srvrole,服务器
开发,APPNAME1,网络,SERVER01
生产,APPNAME1,高速缓存,Server02上

服务器列始终是唯一的。

这是我的代码:

var collection_of_objects =
            (from line in File.ReadAllLines("\\server\\shares\\App\\Farms.csv").Skip(1)
            let parts = line.Split(',')
            select new
            {
               env = parts[0],
               app = parts[1],
               srvrole = parts[2],
               servers = parts[3],
             }
                ).ToList();
           dropdown_app.DataSource = collection_of_objects.Distinct();
           dropdown_app.DataTextField = "app";
           dropdown_app.DataBind();

           srvrole.DataSource = collection_of_objects.Distinct();
           srvrole.DataTextField = "srvrole";
           srvrole.DataBind();

我还尝试使用Streamreader并输出到Datatable,但是,我无法将Datatable分配给下拉列表的数据源。 TYIA

1 个答案:

答案 0 :(得分:0)

我能够使用streamreader解决它。如果有更简单的方法可以做到这一点,我全都听见了!



protected void Page_Load(object sender, EventArgs e)
        {
            List<string> environment = new List<String>();
            List<string> application = new List<String>();
            List<string> serverrole = new List<String>();
            List<string> servers = new List<String>();
            
            ReadCSV(environment, application, serverrole, servers);
            
            string[] envlist = environment.ToArray();
            string[] applist = application.ToArray();
            string[] srvrolelist = serverrole.ToArray();
            string[] serverlist = servers.ToArray();

            dropdown_app.DataSource = applist.Skip(1).Distinct();
            dropdown_app.DataBind();

            srvrole.DataSource = srvrolelist.Skip(1).Distinct();
            srvrole.DataBind();

        }

        public static void ReadCSV(List<string> environment, List<string> application, List<string> serverrole, List<string> servers) 
        {
            StreamReader reader = new StreamReader(File.OpenRead(@"\\server\shares\App\Reference\Farms.csv"));

            while (!reader.EndOfStream)
            {
                string line = reader.ReadLine();
                if (!String.IsNullOrWhiteSpace(line))
                {
                    string[] values = line.Split(',');
                    if (values.Length >= 4)
                    {
                        environment.Add(values[0]);
                        application.Add(values[1]);
                        serverrole.Add(values[2]);
                        servers.Add(values[3]);
                    }
                }
            }
        }
&#13;
&#13;
&#13;