我在SearchFlyClass中有一个Arraylist GetFly()
...
public ArrayList GetFly(int tip, string country)
{
...
var list = new ArrayList();
var reader = command.ExecuteReader();
if (reader.HasRows)
{
...
while (reader.Read())
{
decimal nr_zbor = reader.GetDecimal(cod_zbor);
string aeroport = reader.GetString(nume_aeroport);
string companie = reader.GetString(nume_companie);
list.Add(nr_zbor);
list.Add(companie);
list.Add(aeroport);
}
}
...
我希望在列表视图中列出Form1.cs列表[zbor(colzbor),airport(colAirport),company(colCompany)],但我现在不知道如何
private SearchFlyClass searchFly = new SearchFlyClass();
private ArrayList fly = new ArrayList();
...
private void ShowResultFlySearch(int direction, string country)
{
fly = searchFly.GetFly(direction, country);
for (int count = 0; count < fly.Count; count++)
{
string zbor = fly[0].ToString();
string companie = fly[1].ToString();
string aeroport = fly[2].ToString();
ListViewItem searchlist = new ListViewItem();
searchlist.Items.Add(new ListViewItem(elem));
}
}
有人可以帮助我吗?
答案 0 :(得分:0)
首先,您必须将ListView放入View模式详细信息,您可以使用以下代码(也可以在设计器中设置View属性):
ListView listView = new ListView();
listView.View = View.Details;
然后你必须为listView分配列(也可以在设计器中完成):
listView.Columns.Add("zbor");
listView.Columns.Add("airport");
listView.Columns.Add("company");
在此之后,您必须通过修改函数将其他列分配给ListViewItem子项:
private void ShowResultFlySearch(int direction, string country)
{
fly = searchFly.GetFly(direction, country);
for (int count = 0; count < fly.Count; count++)
{
string zbor = fly[0].ToString();
string companie = fly[1].ToString();
string aeroport = fly[2].ToString();
ListViewItem listViewItem = new ListViewItem(zbor);
listViewItem.SubItems.Add(airport);
listViewItem.SubItems.Add(companie);
listView.Items.Add (listViewItem);
}
}
该函数假定它在Form1.cs中并且您将listView变量实例化为ListView类型的类变量。 C#和面向对象编程的基础知识。
答案 1 :(得分:0)
此代码存在许多问题。首先,您是否有任何理由使用ArrayList
而不是通用集合类型?例如。 List<T>
其次,我将创建一个类型来存储实体的一个实例的所有相关数据,而不是将实体的列值放入无类型集合中。
第三,您没有在count
循环中的任何位置引用for
- 可能是因为查询返回单个实体,因此for
循环是多余的,因为您知道为单个实体返回的项目数。您还使用了似乎尚未定义的变量elem
。
<强>更新强>
定义描述您的实体的类型:
public class Flight
{
public decimal Code { get; set; }
public string Company { get; set; }
public string Airport { get; set; }
}
更改您的方法以返回实体的实例:
public Flight GetFlight(int tip, string country)
创建一个从该方法返回的新实例,并从数据库查询结果填充它:
var flight = new Flight();
flight.Code = reader.GetDecimal(cod_zbor);
flight.Airport = reader.GetString(nume_aeroport);
flight.Company = reader.GetString(nume_companie);
return flight;
现在您的其他方法可以使用更新的方法:
var flight = searchFly.GetFlight(...);
// access flight properties here
这假定您的查询返回单个实体。如果它返回了一个集合,那么您可以根据需要使用List<Flight>
或IEnumerable<Flight>
作为返回类型。